生活随笔
收集整理的這篇文章主要介紹了
机器学习中的数据预处理(sklearn preprocessing)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Standardization即標準化,盡量將數據轉化為均值為零,方差為一的數據,形如標準正態分布(高斯分布)。實際中我們會忽略數據的分布情況,僅僅是通過改變均值來集中數據,然后將非連續特征除以他們的標準差。sklearn中 scale函數提供了簡單快速的singlearray-like數據集操作。
一、標準化,均值去除和按方差比例縮放(Standardization, or mean removal and variance scaling)
數據集的標準化:當個體特征太過或明顯不遵從高斯正態分布時,標準化表現的效果較差。實際操作中,經常忽略特征數據的分布形狀,移除每個特征均值,劃分離散特征的標準差,從而等級化,進而實現數據中心化。
1. scale 零均值單位方差
from?sklearn?import?preprocessing???import?numpy?as?np????X?=?np.array([[1.,?-1.,?2.],?[2.,?0.,?0.],?[0.,?1.,?-1.]])????X_scaled?=?preprocessing.scale(X)???#output?:X_scaled?=?[[?0.?????????-1.22474487??1.33630621]???????????????????[?1.22474487??0.?????????-0.26726124]???????????????????[-1.22474487??1.22474487?-1.06904497]]??#scaled之后的數據零均值,單位方差??X_scaled.mean(axis=0)??#?column?mean:?array([?0.,??0.,??0.])????X_scaled.std(axis=0)??#column?standard?deviation:?array([?1.,??1.,??1.])??
2.StandardScaler計算訓練集的平均值和標準差,以便測試數據集使用相同的變換。
scaler?=?preprocessing.StandardScaler().fit(X)???scaler.mean_????scaler.std_?????scaler.transform(X)???scaler.transform([[-1.,?1.,?0.]])????
注 :1)若設置with_mean=False 或者 with_std=False,則不做centering 或者scaling處理。
2)scale和StandardScaler可以用于回歸模型中的目標值處理。
二、將數據特征縮放至某一范圍(scalingfeatures to a range)
另外一種標準化方法是將數據縮放至給定的最小值與最大值之間,通常是0與1之間,可用MinMaxScaler實現。或者將最大的絕對值縮放至單位大小,可用MaxAbsScaler實現。
使用這種標準化方法的原因是,有時數據集的標準差非常非常小,有時數據中有很多很多零(稀疏數據)需要保存住0元素。
1. MinMaxScaler(最小最大值標準化)
公式:X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) ;
X_scaler = X_std/ (max - min) + min
??X_train?=?np.array([[1.,?-1.,?2.],?[2.,?0.,?0.],?[0.,?1.,?-1.]])??min_max_scaler?=?preprocessing.MinMaxScaler()???X_train_minmax?=?min_max_scaler.fit_transform(X_train)??????[?1.????????,??0.5???????,??0.33333333],??????????[?0.????????,??1.????????,??0.????????]])????X_test?=?np.array([[?-3.,?-1.,?4.]])????X_test_minmax?=?min_max_scaler.transform(X_test)?????min_max_scaler.scale_??????????min_max_scaler.min_???????????
2. MaxAbsScaler(絕對值最大標準化)
與上述標準化方法相似,但是它通過除以最大值將訓練集縮放至[-1,1]。這意味著數據已經以0為中心或者是含有非常非常多0的稀疏數據。
X_train?=?np.array([[?1.,?-1.,??2.],???????????????????????[?2.,??0.,??0.],??????????????????????[?0.,??1.,?-1.]])??max_abs_scaler?=?preprocessing.MaxAbsScaler()??X_train_maxabs?=?max_abs_scaler.fit_transform(X_train)??#?doctest?+NORMALIZE_WHITESPACE^,?out:?array([[?0.5,?-1.,??1.?],?[?1.?,?0.?,??0.?],???????[?0.?,??1.?,?-0.5]])??X_test?=?np.array([[?-3.,?-1.,??4.]])??X_test_maxabs?=?max_abs_scaler.transform(X_test)?#out:?array([[-1.5,?-1.?,??2.?]])??max_abs_scaler.scale_??#out:?array([?2.,??1.,??2.])??
更多的數據預處理方法參考官方文檔:http://scikit-learn.org/stable/modules/preprocessing.html#standardization-or-mean-removal-and-variance-scaling
參考官方文檔:http://scikit-learn.org/stable/modules/preprocessing.html
官網:http://scikit-learn.org/stable/
總結
以上是生活随笔為你收集整理的机器学习中的数据预处理(sklearn preprocessing)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。