当前位置: 首页 > news >正文

kaggle_吃鸡_数据预处理随机森林

数据可从kaggle上自行下载:

#导包
import pandas as pd 
import numpy as np
#读取数据(若复制属性中的原路径,读取时加r“”) yourself  
df=pd.read_csv(r"F:\AI人工智能\正式课程\8月30日Day03-决策树与Kaggle项目实践\pubg(竞赛)参考模型\data\train_V2.csv")
df.head()
IdgroupIdmatchIdassistsboostsdamageDealtDBNOsheadshotKillshealskillPlace...revivesrideDistanceroadKillsswimDistanceteamKillsvehicleDestroyswalkDistanceweaponsAcquiredwinPointswinPlacePerc
07f96b2f878858a4d4b580de459bea10357fd1a4a91000.000060...0.00.00000.00.0000.0244.8011466.00.4444
1eef90569b9d03c684d5656442f9eaeb375fc57110c0091.4700057...0.00.00450.011.0400.01434.0050.00.6400
21eaf90ac73de726a4a42c3245a74110163d8bb94ae1068.000047...0.00.00000.00.0000.0161.8020.00.7755
34616d365dd2853a930a9c79cd721f1f1f4ef412d7e0032.900075...0.00.00000.00.0000.0202.7030.00.1667
4315c96c26c9aacde04010b3458dd6dc8ff871e21e600100.000045...0.00.00000.00.0000.049.7520.00.1875

5 rows × 29 columns

df.info   #df.info() 返回类别
<bound method DataFrame.info of                      Id         groupId         matchId  assists  boosts  \
0        7f96b2f878858a  4d4b580de459be  a10357fd1a4a91        0       0   
1        eef90569b9d03c  684d5656442f9e  aeb375fc57110c        0       0   
2        1eaf90ac73de72  6a4a42c3245a74  110163d8bb94ae        1       0   
3        4616d365dd2853  a930a9c79cd721  f1f1f4ef412d7e        0       0   
4        315c96c26c9aac  de04010b3458dd  6dc8ff871e21e6        0       0   
...                 ...             ...             ...      ...     ...   
4446961  afff7f652dbc10  d238e426f50de7  18492834ce5635        0       0   
4446962  f4197cf374e6c0  408cdb5c46b2ac  ee854b837376d9        0       1   
4446963  e1948b1295c88a  e26ac84bdf7cef  6d0cd12784f1ab        0       0   
4446964  cc032cdd73b7ac  c2223f35411394  c9c701d0ad758a        0       4   
4446965  0d8e7ed728b6fd  8c74f72fedf5ff  62a16aabcc095c        0       2   damageDealt  DBNOs  headshotKills  heals  killPlace  ...  revives  \
0               0.0      0              0      0         60  ...      0.0   
1             91.47      0              0      0         57  ...      0.0   
2              68.0      0              0      0         47  ...      0.0   
3              32.9      0              0      0         75  ...      0.0   
4             100.0      0              0      0         45  ...      0.0   
...             ...    ...            ...    ...        ...  ...      ...   
4446961         0.0      0              0      0         74  ...      0.0   
4446962       44.15      0              0      0         69  ...      0.0   
4446963       59.06      0              0      0         66  ...      0.0   
4446964       180.4      1              1      2         11  ...      2.0   
4446965       268.0      0              0      1         18  ...      0.0   rideDistance  roadKills  swimDistance teamKills vehicleDestroys  \
0              0.0000        0.0         0.000         0             0.0   
1              0.0045        0.0        11.040         0             0.0   
2              0.0000        0.0         0.000         0             0.0   
3              0.0000        0.0         0.000         0             0.0   
4              0.0000        0.0         0.000         0             0.0   
...               ...        ...           ...       ...             ...   
4446961     1292.0000        0.0         0.000         0             0.0   
4446962        0.0000        0.0         0.000         0             0.0   
4446963        0.0000        0.0         2.184         0             0.0   
4446964        0.0000        0.0         0.000         0             0.0   
4446965     1369.0000        0.0         0.000         0             0.0   walkDistance  weaponsAcquired  winPoints  winPlacePerc  
0              244.80                1     1466.0        0.4444  
1             1434.00                5        0.0        0.6400  
2              161.80                2        0.0        0.7755  
3              202.70                3        0.0        0.1667  
4               49.75                2        0.0        0.1875  
...               ...              ...        ...           ...  
4446961       1019.00                3     1507.0        0.1786  
4446962         81.70                6        0.0        0.2935  
4446963        788.70                4        0.0        0.4815  
4446964       2748.00                8        0.0        0.8000  
4446965       1244.00                5        0.0        0.5464  [4446966 rows x 29 columns]>
np.unique(df['groupId']).shape
(2026745,)
#查找每一列是否有缺失值
print(df.isnull().sum())
# 查看结果,发现只有winPlacePerc >0 ,所以看一下这一列的空值
Id                 0
groupId            0
matchId            0
assists            0
boosts             0
damageDealt        0
DBNOs              0
headshotKills      0
heals              0
killPlace          0
killPoints         0
kills              0
killStreaks        0
longestKill        0
matchDuration      0
matchType          0
maxPlace           0
numGroups          0
rankPoints         0
revives            0
rideDistance       0
roadKills          0
swimDistance       0
teamKills          0
vehicleDestroys    0
walkDistance       0
weaponsAcquired    0
winPoints          0
winPlacePerc       1
dtype: int64
#找出有缺失值的这一行
df[df['winPlacePerc'].isnull()]
IdgroupIdmatchIdassistsboostsdamageDealtDBNOsheadshotKillshealskillPlace...revivesrideDistanceroadKillsswimDistanceteamKillsvehicleDestroyswalkDistanceweaponsAcquiredwinPointswinPlacePerc
2744604f70c74418bb06412dfbede33f92b224a123c53e008000.00001...00.000.0000.000NaN

1 rows × 29 columns

#把有缺失值的这一行直接删掉(因为在总的中占比太小了,所以就粗暴直接删除好了)
df.drop(index=2744604,inplace=True)
#重新查看下现在还有空值吗?
print(df.isnull().sum())
Id                 0
groupId            0
matchId            0
assists            0
boosts             0
damageDealt        0
DBNOs              0
headshotKills      0
heals              0
killPlace          0
killPoints         0
kills              0
killStreaks        0
longestKill        0
matchDuration      0
matchType          0
maxPlace           0
numGroups          0
rankPoints         0
revives            0
rideDistance       0
roadKills          0
swimDistance       0
teamKills          0
vehicleDestroys    0
walkDistance       0
weaponsAcquired    0
winPoints          0
winPlacePerc       0
dtype: int64
#开始处理数据,一列列看
#先看每一场比赛都有多少人,最少的一场比赛只有两人
print(df.groupby('matchId')['matchId'].count().sort_values())
matchId
e5a77433bc436f      2
8aa5066c4b6a79      5
9f2b49358564ea      6
39d2800dad8ae6      6
bc10cc08f1f56a      7... 
51b68a308313f9    100
1f6851edf8ad9e    100
3bd0db1836530f    100
3be2b807005541    100
5ee9860774ef58    100
Name: matchId, Length: 47964, dtype: int64
#!!! transform的作用类似实现了一个一对多的映射功能,把统计数量映射到对应的每个样本上
count = df.groupby('matchId')['matchId'].transform('count')
df['playersJoined']=count
df.head()
IdgroupIdmatchIdassistsboostsdamageDealtDBNOsheadshotKillshealskillPlace...rideDistanceroadKillsswimDistanceteamKillsvehicleDestroyswalkDistanceweaponsAcquiredwinPointswinPlacePercplayersJoined
07f96b2f878858a4d4b580de459bea10357fd1a4a91000.0000060...0.000000.0000244.80114660.444496
1eef90569b9d03c684d5656442f9eaeb375fc57110c0091.4700057...0.0045011.04001434.00500.640091
21eaf90ac73de726a4a42c3245a74110163d8bb94ae1068.0000047...0.000000.0000161.80200.775598
34616d365dd2853a930a9c79cd721f1f1f4ef412d7e0032.9000075...0.000000.0000202.70300.166791
4315c96c26c9aacde04010b3458dd6dc8ff871e21e600100.0000045...0.000000.000049.75200.187597

5 rows × 30 columns

#比赛场次id,和人数
id_num=df[['matchId','playersJoined']]
#id_num.count()
unique_id_num = id_num.drop_duplicates()  # 默认基于所有列去重
unique_id_num.count()
matchId          47964
playersJoined    47964
dtype: int64
#通过画图看大部分比赛是多少人
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns #可视化库
plt.figure(figsize=(20,10))
#seaborn下的countplot方法,可以直接绘制统计过数量之后的直方图
sns.countplot(unique_id_num['playersJoined'])
plt.show()
#看图发现比较集中在后面,凭感觉取个75看看

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

plt.figure(figsize=(20,10))
#seaborn下的countplot方法,可以直接绘制统计过数量之后的直方图
sns.countplot(unique_id_num[unique_id_num['playersJoined']>=75]['playersJoined'])
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

# 对部分特征值进行规范化
df['killsNorm'] = df['kills']*((100-df['playersJoined'])/100 + 1)
df['damageDealtNorm'] = df['damageDealt']*((100-df['playersJoined'])/100 + 1)
df['maxPlaceNorm'] = df['maxPlace']*((100-df['playersJoined'])/100 + 1)
df['matchDurationNorm'] = df['matchDuration']*((100-df['playersJoined'])/100 + 1)
# 创建新变量“healsandboosts”
df['healsandboosts'] = df['heals'] + df['boosts']
# 创建新变量,统计玩家移动距离
df['totalDistance'] = df['rideDistance'] + df['walkDistance'] + df['swimDistance']
# 创建新变量,统计玩家是否在游戏中,有击杀,但是没有移动,如果是返回True, 否则返回false
df['killsWithoutMoving'] = ((df['kills']>0) &(df['totalDistance']==0))
df['killsWithoutMoving'].describe()
count     4446965
unique          2
top         False
freq      4445430
Name: killsWithoutMoving, dtype: object
# 检查是否存在有击杀但是没有移动的数据
df[df['killsWithoutMoving'] == True].shape
(1535, 37)
# 删除这些数据
df.drop(df[df['killsWithoutMoving']==True].index,inplace=True)
# 查看载具杀敌数超过十个的玩家
# 删除这些数据
df.drop(df[df['roadKills'] > 10].index, inplace=True)
df.shape
(4445426, 37)
# 异常数据删除
df.drop(df[df['kills'] > 30].index, inplace=True)
# 创建变量爆头率
df['headshot_rate'] = df['headshotKills'] / df['kills']
df['headshot_rate'] = df['headshot_rate'].fillna(0)
# 绘制爆头率图像
plt.figure(figsize=(12,4))
sns.distplot(df['headshot_rate'], bins=10, kde=False)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df.drop(df[(df['headshot_rate'] == 1) & (df['kills'] > 9)].index, inplace=True)
# 绘制图像
plt.figure(figsize=(12,4))
sns.distplot(df['longestKill'], bins=10, kde=False)
plt.show()

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df.drop(df[df['longestKill'] >= 1000].index, inplace=True)
df.drop(df[df['walkDistance'] >= 10000].index, inplace=True)
df.drop(df[df['rideDistance'] >= 20000].index, inplace=True)
df.drop(df[df['swimDistance'] >= 2000].index, inplace=True)
df.drop(df[df['weaponsAcquired'] >= 80].index, inplace=True)
df.drop(df[df['heals'] >= 40].index, inplace=True)
# 关于比赛类型,共有16种方式
df['matchType'].unique()
array(['squad-fpp', 'duo', 'solo-fpp', 'squad', 'duo-fpp', 'solo','normal-squad-fpp', 'crashfpp', 'flaretpp', 'normal-solo-fpp','flarefpp', 'normal-duo-fpp', 'normal-duo', 'normal-squad','crashtpp', 'normal-solo'], dtype=object)
# 对matchType进行one_hot编码
# 通过在后面添加的方式,实现,赋值并不是替换
df = pd.get_dummies(df, columns=['matchType'])
# 通过正则匹配查看包含matchType的内容
matchType_encoding=df.filter(regex='matchType')
matchType_encoding.head()
matchType_crashfppmatchType_crashtppmatchType_duomatchType_duo-fppmatchType_flarefppmatchType_flaretppmatchType_normal-duomatchType_normal-duo-fppmatchType_normal-solomatchType_normal-solo-fppmatchType_normal-squadmatchType_normal-squad-fppmatchType_solomatchType_solo-fppmatchType_squadmatchType_squad-fpp
00000000000000001
10000000000000001
20010000000000000
30000000000000001
40000000000000100
# 把groupId 和 match Id 转换成类别类型 categorical types
# 就是把一堆不怎么好识别的内容转换成数字
df['groupId'] = df['groupId'].astype('category')
df["groupId_cat"] = df["groupId"].cat.codes #转成category类型后才能做这一步
#df["groupId_cat"].head()
df['matchId'] = df['matchId'].astype('category')
df["matchId_cat"] = df["matchId"].cat.codes #转成category类型后才能做这一步
df["matchId_cat"].head()
0    30085
1    32751
2     3143
3    45260
4    20531
Name: matchId_cat, dtype: int32
# 删除之前列
df.drop(['groupId', 'matchId'], axis=1, inplace=True)
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 4444752 entries, 0 to 4446965
Data columns (total 53 columns):#   Column                      Dtype  
---  ------                      -----  0   Id                          object 1   assists                     int64  2   boosts                      int64  3   damageDealt                 float644   DBNOs                       int64  5   headshotKills               int64  6   heals                       int64  7   killPlace                   int64  8   killPoints                  int64  9   kills                       int64  10  killStreaks                 int64  11  longestKill                 float6412  matchDuration               int64  13  maxPlace                    int64  14  numGroups                   int64  15  rankPoints                  int64  16  revives                     int64  17  rideDistance                float6418  roadKills                   int64  19  swimDistance                float6420  teamKills                   int64  21  vehicleDestroys             int64  22  walkDistance                float6423  weaponsAcquired             int64  24  winPoints                   int64  25  winPlacePerc                float6426  playersJoined               int64  27  killsNorm                   float6428  damageDealtNorm             float6429  maxPlaceNorm                float6430  matchDurationNorm           float6431  healsandboosts              int64  32  totalDistance               float6433  killsWithoutMoving          bool   34  headshot_rate               float6435  matchType_crashfpp          uint8  36  matchType_crashtpp          uint8  37  matchType_duo               uint8  38  matchType_duo-fpp           uint8  39  matchType_flarefpp          uint8  40  matchType_flaretpp          uint8  41  matchType_normal-duo        uint8  42  matchType_normal-duo-fpp    uint8  43  matchType_normal-solo       uint8  44  matchType_normal-solo-fpp   uint8  45  matchType_normal-squad      uint8  46  matchType_normal-squad-fpp  uint8  47  matchType_solo              uint8  48  matchType_solo-fpp          uint8  49  matchType_squad             uint8  50  matchType_squad-fpp         uint8  51  groupId_cat                 int32  52  matchId_cat                 int32  
dtypes: bool(1), float64(12), int32(2), int64(21), object(1), uint8(16)
memory usage: 1.3+ GB
# 随机抽取100万条数据,进行训练
df_sample=df.sample(1000000)
df_sample.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1000000 entries, 3835307 to 3933898
Data columns (total 53 columns):#   Column                      Non-Null Count    Dtype  
---  ------                      --------------    -----  0   Id                          1000000 non-null  object 1   assists                     1000000 non-null  int64  2   boosts                      1000000 non-null  int64  3   damageDealt                 1000000 non-null  float644   DBNOs                       1000000 non-null  int64  5   headshotKills               1000000 non-null  int64  6   heals                       1000000 non-null  int64  7   killPlace                   1000000 non-null  int64  8   killPoints                  1000000 non-null  int64  9   kills                       1000000 non-null  int64  10  killStreaks                 1000000 non-null  int64  11  longestKill                 1000000 non-null  float6412  matchDuration               1000000 non-null  int64  13  maxPlace                    1000000 non-null  int64  14  numGroups                   1000000 non-null  int64  15  rankPoints                  1000000 non-null  int64  16  revives                     1000000 non-null  int64  17  rideDistance                1000000 non-null  float6418  roadKills                   1000000 non-null  int64  19  swimDistance                1000000 non-null  float6420  teamKills                   1000000 non-null  int64  21  vehicleDestroys             1000000 non-null  int64  22  walkDistance                1000000 non-null  float6423  weaponsAcquired             1000000 non-null  int64  24  winPoints                   1000000 non-null  int64  25  winPlacePerc                1000000 non-null  float6426  playersJoined               1000000 non-null  int64  27  killsNorm                   1000000 non-null  float6428  damageDealtNorm             1000000 non-null  float6429  maxPlaceNorm                1000000 non-null  float6430  matchDurationNorm           1000000 non-null  float6431  healsandboosts              1000000 non-null  int64  32  totalDistance               1000000 non-null  float6433  killsWithoutMoving          1000000 non-null  bool   34  headshot_rate               1000000 non-null  float6435  matchType_crashfpp          1000000 non-null  uint8  36  matchType_crashtpp          1000000 non-null  uint8  37  matchType_duo               1000000 non-null  uint8  38  matchType_duo-fpp           1000000 non-null  uint8  39  matchType_flarefpp          1000000 non-null  uint8  40  matchType_flaretpp          1000000 non-null  uint8  41  matchType_normal-duo        1000000 non-null  uint8  42  matchType_normal-duo-fpp    1000000 non-null  uint8  43  matchType_normal-solo       1000000 non-null  uint8  44  matchType_normal-solo-fpp   1000000 non-null  uint8  45  matchType_normal-squad      1000000 non-null  uint8  46  matchType_normal-squad-fpp  1000000 non-null  uint8  47  matchType_solo              1000000 non-null  uint8  48  matchType_solo-fpp          1000000 non-null  uint8  49  matchType_squad             1000000 non-null  uint8  50  matchType_squad-fpp         1000000 non-null  uint8  51  groupId_cat                 1000000 non-null  int32  52  matchId_cat                 1000000 non-null  int32  
dtypes: bool(1), float64(12), int32(2), int64(21), object(1), uint8(16)
memory usage: 290.9+ MB
df_sample.shape
(1000000, 53)
#确定特征值和目标值
df_sample_x=df_sample.drop(["winPlacePerc", "Id"], axis=1)
df_sample_y=df_sample['winPlacePerc']
df_sample_y.shape
(1000000,)
#分割训练集和测试集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(df_sample_x,df_sample_y,test_size=0.2)
print(x_train.shape,x_test.shape,y_train.shape,y_test.shape)
(800000, 51) (200000, 51) (800000,) (200000,)
#使用机器学习进行训练
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error
# 模型训练
m1 = RandomForestRegressor(n_estimators=40, min_samples_leaf=3, max_features='sqrt',n_jobs=-1)
# n_jobs=-1 表示训练的时候,并行数和cpu的核数一样,如果传入具体的值,表示用几个核去跑m1.fit(x_train, y_train)
RandomForestRegressor(max_features='sqrt', min_samples_leaf=3, n_estimators=40,n_jobs=-1)
#用模型去评估测试集,此处返回了准确率
m1.score(x_test,y_test)
0.921637092838284
#去看差距有多大
y_pre=m1.predict(x_test)
mean_absolute_error(y_true=y_test,y_pred=y_pre)
0.061032362616554967
# 查看特征值在当前模型中的重要程度!!!
#m1.feature_importances_
imp_df_sample_x = pd.DataFrame({"cols":df_sample_x.columns, "imp":m1.feature_importances_})
imp_df_sample_x = imp_df_sample_x.sort_values("imp", ascending=False)
imp_df_sample_x.head(20)
colsimp
21walkDistance0.259065
6killPlace0.230299
30totalDistance0.168414
1boosts0.058193
29healsandboosts0.049961
22weaponsAcquired0.045347
5heals0.021690
16rideDistance0.021267
26damageDealtNorm0.019354
28matchDurationNorm0.011771
10longestKill0.011535
9killStreaks0.011351
11matchDuration0.010507
8kills0.008333
25killsNorm0.007792
13numGroups0.006870
27maxPlaceNorm0.006784
24playersJoined0.006689
12maxPlace0.006370
0assists0.005943
keep=imp_df_sample_x[imp_df_sample_x['imp']>0.005].cols
df_2=df_sample_x[keep]
df_2.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1000000 entries, 3835307 to 3933898
Data columns (total 21 columns):#   Column             Non-Null Count    Dtype  
---  ------             --------------    -----  0   walkDistance       1000000 non-null  float641   killPlace          1000000 non-null  int64  2   totalDistance      1000000 non-null  float643   boosts             1000000 non-null  int64  4   healsandboosts     1000000 non-null  int64  5   weaponsAcquired    1000000 non-null  int64  6   heals              1000000 non-null  int64  7   rideDistance       1000000 non-null  float648   damageDealtNorm    1000000 non-null  float649   matchDurationNorm  1000000 non-null  float6410  longestKill        1000000 non-null  float6411  killStreaks        1000000 non-null  int64  12  matchDuration      1000000 non-null  int64  13  kills              1000000 non-null  int64  14  killsNorm          1000000 non-null  float6415  numGroups          1000000 non-null  int64  16  maxPlaceNorm       1000000 non-null  float6417  playersJoined      1000000 non-null  int64  18  maxPlace           1000000 non-null  int64  19  assists            1000000 non-null  int64  20  damageDealt        1000000 non-null  float64
dtypes: float64(9), int64(12)
memory usage: 167.8 MB
#重新划分训练集、测试集
xx_train,xx_test,yy_train,yy_test=train_test_split(df_2,df_sample_y,test_size=0.2)
m2=RandomForestRegressor(n_estimators=40,min_samples_leaf=3, max_features='sqrt',n_jobs=-1)
m2.fit(xx_train,yy_train)
m2.score(xx_test,yy_test)
0.9249575750059011
yy_pre=m2.predict(xx_test)
mean_absolute_error(y_true=yy_test,y_pred=yy_pre)
0.05952061649490702


文章转载自:

http://Ql01t1zN.qykxj.cn
http://dvH9MaXJ.qykxj.cn
http://bgJ31OMJ.qykxj.cn
http://FvmOLg2V.qykxj.cn
http://lzYh6JFE.qykxj.cn
http://0GjQe6h1.qykxj.cn
http://aBJj2a3o.qykxj.cn
http://aLYoPpal.qykxj.cn
http://wyntz1ov.qykxj.cn
http://TuIDn2VJ.qykxj.cn
http://sZr5wGIp.qykxj.cn
http://WlK37KqH.qykxj.cn
http://KWArcNvK.qykxj.cn
http://XD4ztSo5.qykxj.cn
http://qoQZHmTO.qykxj.cn
http://3OTPHuoq.qykxj.cn
http://fudcPiQ5.qykxj.cn
http://skj3UQur.qykxj.cn
http://DdzuSjJF.qykxj.cn
http://yGdT4yLU.qykxj.cn
http://dkAyhOjv.qykxj.cn
http://nrrx9R3Z.qykxj.cn
http://ZMxSgywj.qykxj.cn
http://7xSgpyGM.qykxj.cn
http://Fs1DF3ey.qykxj.cn
http://FuNq1upk.qykxj.cn
http://ardCEAXD.qykxj.cn
http://6lSRLlWV.qykxj.cn
http://jJ1o1lEF.qykxj.cn
http://uP8cFQ5z.qykxj.cn
http://www.dtcms.com/a/373280.html

相关文章:

  • Excel随机金额或数字分配方法
  • cocos异步加载问题
  • Spring Boot 多数据源配置
  • 信奥赛csp初赛高频考点真题分类解析之:基本运算
  • langchain 输出解析器 Output Parser
  • [数据结构] 栈 · Stack
  • 大语言模型的链式思维推理:从理论到实践
  • C语言快速排序
  • 软件可靠性失效严重程度分类与深度解析
  • 如何让dify分类器更加精准的分类?
  • C# Web API 前端传入参数时间为Utc
  • Python爬虫实战:研究3D plotting模块,构建房地产二手房数据采集和分析系统
  • sglang pytorch NCCL hang分析
  • langchain 缓存 Caching
  • Spark生态全景图:图计算与边缘计算的创新实践
  • 最长上升/下降子序列的长度(动态规划)
  • 自动驾驶中的传感器技术38——Lidar(13)
  • 计算机组成原理:计算机的分类
  • Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件
  • 辨析——汇编 shell C语言
  • 免费的SSL和付费SSL 证书差异
  • 全新 Navicat On-Prem Server 3 正式上线,数据库云管理能力全面跃升
  • 华大 MCU 串口 PWM 控制方案完整笔记
  • 档案管理软件
  • Qoder 使用说明书,公测期免费体验
  • 实现自己的AI视频监控系统-第四章-基于langchain的AI大模型与智能体应用2
  • 消息队列-初识kafka
  • linux 100个问答81~101 主要是k8s相关
  • 【C++设计模式】第三篇:观察者模式(别名:发布-订阅模式、模型-视图模式、源-监听器模式)
  • OpenCV C++ 二值图像处理:阈值化技术全解析