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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习中的数据预处理(sklearn preprocessing)

發(fā)布時(shí)間:2024/1/23 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习中的数据预处理(sklearn preprocessing) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Standardization即標(biāo)準(zhǔn)化,盡量將數(shù)據(jù)轉(zhuǎn)化為均值為零,方差為一的數(shù)據(jù),形如標(biāo)準(zhǔn)正態(tài)分布(高斯分布)。實(shí)際中我們會(huì)忽略數(shù)據(jù)的分布情況,僅僅是通過改變均值來集中數(shù)據(jù),然后將非連續(xù)特征除以他們的標(biāo)準(zhǔn)差。sklearn中 scale函數(shù)提供了簡單快速的singlearray-like數(shù)據(jù)集操作。

一、標(biāo)準(zhǔn)化,均值去除和按方差比例縮放(Standardization, or mean removal and variance scaling)

  數(shù)據(jù)集的標(biāo)準(zhǔn)化:當(dāng)個(gè)體特征太過或明顯不遵從高斯正態(tài)分布時(shí),標(biāo)準(zhǔn)化表現(xiàn)的效果較差。實(shí)際操作中,經(jīng)常忽略特征數(shù)據(jù)的分布形狀,移除每個(gè)特征均值,劃分離散特征的標(biāo)準(zhǔn)差,從而等級(jí)化,進(jìn)而實(shí)現(xiàn)數(shù)據(jù)中心化。

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之后的數(shù)據(jù)零均值,單位方差??
  • 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計(jì)算訓(xùn)練集的平均值和標(biāo)準(zhǔn)差,以便測試數(shù)據(jù)集使用相同的變換。

  • scaler?=?preprocessing.StandardScaler().fit(X)?#out:?StandardScaler(copy=True,?with_mean=True,?with_std=True)??
  • scaler.mean_??#out:?array([?1.,??0.?,??0.33333333])????
  • scaler.std_?#out:?array([?0.81649658,??0.81649658,??1.24721913])???
  • #測試將該scaler用于輸入數(shù)據(jù),變換之后得到的結(jié)果同上??
  • scaler.transform(X)?#out:?array([[?0.,?-1.22474487,??1.33630621],????????[?1.22474487,?0.?,?-0.26726124],??[-1.22474487,1.22474487,?-1.06904497]])????
  • scaler.transform([[-1.,?1.,?0.]])??#scale?the?new?data,?out:?array([[-2.44948974,??1.22474487,?-0.26726124]])??
  • 注 :1)若設(shè)置with_mean=False 或者 with_std=False,則不做centering 或者scaling處理。

    2)scale和StandardScaler可以用于回歸模型中的目標(biāo)值處理。

    二、將數(shù)據(jù)特征縮放至某一范圍(scalingfeatures to a range)

    另外一種標(biāo)準(zhǔn)化方法是將數(shù)據(jù)縮放至給定的最小值與最大值之間,通常是0與1之間,可用MinMaxScaler實(shí)現(xiàn)。或者將最大的絕對(duì)值縮放至單位大小,可用MaxAbsScaler實(shí)現(xiàn)。

    使用這種標(biāo)準(zhǔn)化方法的原因是,有時(shí)數(shù)據(jù)集的標(biāo)準(zhǔn)差非常非常小,有時(shí)數(shù)據(jù)中有很多很多零(稀疏數(shù)據(jù))需要保存住0元素。

    1. MinMaxScaler(最小最大值標(biāo)準(zhǔn)化)

    公式:X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) ;

    X_scaler = X_std/ (max - min) + min

  • #例子:將數(shù)據(jù)縮放至[0,?1]間。訓(xùn)練過程:?fit_transform()??
  • 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)????
  • #out:?array([[?0.5???????,??0.????????,??1.????????],???
  • [?1.????????,??0.5???????,??0.33333333],??????????
  • [?0.????????,??1.????????,??0.????????]])??
  • #將上述得到的scale參數(shù)應(yīng)用至測試數(shù)據(jù)??
  • X_test?=?np.array([[?-3.,?-1.,?4.]])????
  • X_test_minmax?=?min_max_scaler.transform(X_test)?#out:?array([[-1.5?,??0.?,?1.66666667]])??
  • #可以用以下方法查看scaler的屬性??
  • min_max_scaler.scale_????????#out:?array([?0.5?,??0.5,??0.33...])??
  • min_max_scaler.min_?????????#out:?array([?0.,??0.5,??0.33...])??
  • 2. MaxAbsScaler(絕對(duì)值最大標(biāo)準(zhǔn)化)

    與上述標(biāo)準(zhǔn)化方法相似,但是它通過除以最大值將訓(xùn)練集縮放至[-1,1]。這意味著數(shù)據(jù)已經(jīng)以0為中心或者是含有非常非常多0的稀疏數(shù)據(jù)。

  • 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.])??

  • 更多的數(shù)據(jù)預(yù)處理方法參考官方文檔:http://scikit-learn.org/stable/modules/preprocessing.html#standardization-or-mean-removal-and-variance-scaling

    參考官方文檔:http://scikit-learn.org/stable/modules/preprocessing.html

    官網(wǎng):http://scikit-learn.org/stable/

    總結(jié)

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

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。