日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习——数据的预处理(总结大全)

發布時間:2023/12/31 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习——数据的预处理(总结大全) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

數據清洗

1、重復觀測處理

?2、缺失值處理

刪除法

?替換法

?插補法

3、異常值處理

刪減特征

? ? ? ? ?1. 去除唯一屬性

數據查看

特征縮放

一、為什么要特征數據縮放?

二、特征縮放常用的方法

1、歸一化(Normalization)

2、標準化(Standardization)

相同點及其聯系


數據清洗

????????在數據處理過程中,一般都需要進行數據的清洗工作,如數據集是 否存在重復、是否存在缺失、數據是否具有完整性和一致性、數據中是 否存在異常值等。

1、重復觀測處理

import pandas as pd import numpy as npdata=pd.DataFrame([[8.3,6],[9.3,4],[6,8],[3,1],[3,1]]) # 重復觀測的檢測 print('數據集中是否存在重復觀測:\n',any(data.duplicated()))

# 刪除重復項 data.drop_duplicates(inplace = True) # 重復觀測的檢測 print('數據集中是否存在重復觀測:\n',any(data.duplicated())) print(data)

2、缺失值處理

????????一般而言,當遇到缺失值(Python中用NaN表示)時,可以采用三 種方法處置,分別是刪除法、替換法和插補法。
  • 刪除法

import pandas as pd import numpy as npdata=pd.DataFrame([[8.3,6,],[9.3,4,],[6,8,8],[5,6],[3,1,8]],columns=('a','b','c')) # 缺失觀測的檢測 print('數據集中是否存在缺失值:\n',any(data.isnull())) print(data)# 刪除法之變量刪除 data.drop(["c"],axis =1 ,inplace=True) print(data)

# 刪除法之記錄刪除 data=data.dropna(axis=0,how='any')

解析:

?????1、刪除全為空值的行或列

? ? ? data=data.dropna(axis=0,how='all') ? #行

? ? ? data=data.dropna(axis=1,how='all') ? #列

2、刪除含有空值的行或列

? ? ?data=data.dropna(axis=0,how='any') ? #行

? ? data=data.dropna(axis=1,how='any') ? #列

函數具體解釋:

DataFrame.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)
函數作用:刪除含有空值的行或列

axis:維度,axis=0表示index行,axis=1表示columns列,默認為0

how:"all"表示這一行或列中的元素全部缺失(為nan)才刪除這一行或列,"any"表示這一行或列中只要有元素缺失,就刪除這一行或列

thresh:一行或一列中至少出現了thresh個才刪除。

subset:在某些列的子集中選擇出現了缺失值的列刪除,不在子集中的含有缺失值得列或行不會刪除(有axis決定是行還是列)

inplace:刷選過缺失值得新數據是存為副本還是直接在原數據上進行修改。
?

  • ?替換法

# 替換法之前向替換 #data.fillna(method = 'ffill') # 替換法之后向替換 #data.fillna(method = 'bfill') #替換法之補平均數 #data['c']=data['c'].fillna(data['c'].mean()) #替換法之補眾數 #data['c']=data['c'].fillna(data['c'].mode()) #替換法之補中位數 data['c']=data['c'].fillna(data['c'].median()) print(data)

?

  • ?插補法

?插值法是利用已知點建立合適的插值函數,未知值由對應點xi求出的函數值f(xi)近似代替

三、(數據分析)-數據清洗----缺失值處理__23__的博客-CSDN博客

3、異常值處理

4、特征編碼處理

5、特征創建

刪減特征

1. 去除唯一屬性

唯一屬性通常是一些id屬性,這些屬性并不能刻畫樣本自身的分布規律,所以簡單地刪除這些屬性即可。


數據查看

  • 查看行列: data.shape
  • 查看數據詳細信息: data.info(),可以查看是否有缺失值
  • 查看數據的描述統計分析: data.describe(),可以查看到異常數據
  • 獲取前/后10行數據: data.head(10)、data.tail(10)
  • 查看列標簽: data.columns.tolist()
  • 查看行索引: data.index
  • 查看數據類型: data.dtypes
  • 查看數據維度: data.ndim
  • 查看除index外的值: data.values,會以二維ndarray的形式返回DataFrame的數據
  • 查看數據分布(直方圖):?seaborn.distplot(data[列名].dropna())


特征縮放

一、為什么要特征數據縮放?

????????有特征的取值范圍變化大,影響到其他的特征取值范圍較小的,那么,根據歐氏距離公式,整個距離將被取值范圍較大的那個特征所主導。

為避免發生這種情況,一般對各個特征進行縮放,比如都縮放到[0,1],以便每個特征屬性對距離有大致相同的貢獻。

作用:確保這些特征都處在一個相近的范圍。

優點:1、這能幫助梯度下降算法更快地收斂,2、提高模型精

直接求解的缺點:
1、當x1 特征對應權重會比x2 對應的權重小很多,降低模型可解釋性
2、梯度下降時,最終解被某個特征所主導,會影響模型精度與收斂速度
3、正則化時會不平等看待特征的重要程度(尚未標準化就進行L1/L2正則化是錯誤的)

哪些機器學習算法不需要(需要)做歸一化?

????????概率模型(樹形模型)不需要歸一化,因為它們不關心變量的值,而是關心變量的分布和變量之間的條件概率,如決策樹、RF。而像Adaboost、SVM、LR、Knn、KMeans之類的最優化問題就需要歸一化。

二、特征縮放常用的方法

1、歸一化(Normalization)

  • 數值的歸一,丟失數據的分布信息,對數據之間的距離沒有得到較好的保留,但保留了權重。
  • 1.小數據/固定數據的使用;2.不涉及距離度量、協方差計算、數據不符合正態分布的時候;3.進行多指標綜合評價的時候。

?將數值規約到(0,1)或(-1,1)區間。

一個特征X的范圍[min,max]

import pandas as pd import numpy as npdata=pd.DataFrame([[8.3,6],[9.3,4],[6,8],[3,1]]) print(data)data[0]=(data[0]-data[0].min())/(data[0].max()-data[0].min()) data[1]=(data[1]-data[1].min())/(data[1].max()-data[1].min()) print(data)

結果:

2、標準化(Standardization)

  • 數據分布的歸一,較好的保留了數據之間的分布,也即保留了樣本之間的距離,但丟失了權值
  • 1.在分類、聚類算法中,需要使用距離來度量相似性;2.有較好的魯棒性,有產出取值范圍的離散數據或對最大值最小值未知的情況下。

?將數據變換為均值為0,標準差為1的分布切記,并非一定是正態的。

其中μ為所有樣本數據的均值,σ為所有樣本數據的標準差。

先求均值(mean)

再求方差(std)

?

import numpy as np from sklearn.preprocessing import StandardScalerdata=np.array([[2,2,3],[1,2,5]]) print(data) print()scaler=StandardScaler() # fit函數就是要計算這兩個值 scaler.fit(data) # 查看均值和方差 print(scaler.mean_) print(scaler.var_) # transform函數則是利用這兩個值來標準化(轉換) X=scaler.transform(data) print() print(X)

結果:

??

大家可以用以上公式進行驗證一下

?這兩組數據的均值是否為0,方差(σ2)是否為1

相同點及其聯系

  • 歸一化廣義上是包含標準化的,以上主要是從狹義上區分兩者。本質上都是進行特征提取,方便最終數據的比較。都是為了縮小范圍,便于后續的數據處理。
  • 加快梯度下降,損失函數收斂; 提升模型精度; 防止梯度爆炸(消除因為輸入差距過大而帶來的輸出差距過大,進而在反向傳播的過程當中導致梯度過大,從而形成梯度爆炸)
    ?

總結

以上是生活随笔為你收集整理的机器学习——数据的预处理(总结大全)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。