scikit_learn(sklearn)數(shù)據(jù)預(yù)處理

數(shù)據(jù)和特征決定了機器學(xué)習(xí)的上限雇卷,而模型和算法只是逼近這個上限而已洪橘。那特征工程到底是什么呢颠区?顧名思義帚戳,其本質(zhì)是一項工程活動玷或,目的是最大限度地從原始數(shù)據(jù)中提取特征以供算法和模型使用。通過總結(jié)和歸納片任,人們認(rèn)為特征工程包括以下方面:

image.png

博客轉(zhuǎn)載
[ http://blog.csdn.net/u010472823/article/details/53509658 ]

數(shù)據(jù)預(yù)處理實戰(zhàn)

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

Country Age Salary Purchased
France 44 72000 No
Spain 27 48000 Yes
Germany 30 54000 No
Spain 38 61000 No
Germany 40 Yes
France 35 58000 Yes
Spain 52000 No
France 48 79000 Yes
Germany 50 83000 No
France 37 67000 Yes

首先偏友,有上述表格可以發(fā)現(xiàn),樣例數(shù)據(jù)中存在缺失值对供。 一般刪除數(shù)據(jù)或補全數(shù)據(jù)位他。在缺失值補全之前,這里需要理解三個概念产场,眾數(shù)鹅髓,均值,中位數(shù)涝动。
眾數(shù):數(shù)據(jù)中出現(xiàn)次數(shù)最多個數(shù)
均值:數(shù)據(jù)的求和平均迈勋。
中位數(shù):數(shù)據(jù)排序后的中間數(shù)據(jù)炬灭。
具體選擇類中類型填充需要依據(jù)場景選擇醋粟。

首先,我們需要導(dǎo)入sklearn 中的Imputer 類重归,在sklearn 的 preprocessing 包下

from sklearn.preprocessing import Imputer
imp = Imputer(missing_values='NaN', strategy='mean', axis=0)
X[:,1:3] = imputer.fit(X[:,1:3]).transform(X[:,1:3])

strategy采用均值策略米愿,填補上述數(shù)據(jù)中的2,3 兩列鼻吮。axis = 0指列

strategy : string, optional (default="mean")
        The imputation strategy.
        - If "mean", then replace missing values using the mean along
          the axis.
        - If "median", then replace missing values using the median along
          the axis.
        - If "most_frequent", then replace missing using the most frequent
          value along the axis.
>>> print(X)
[['France' 44.0 72000.0]
 ['Spain' 27.0 48000.0]
 ['Germany' 30.0 54000.0]
 ['Spain' 38.0 61000.0]
 ['Germany' 40.0 63777.77777777778]
 ['France' 35.0 58000.0]
 ['Spain' 38.77777777777778 52000.0]
 ['France' 48.0 79000.0]
 ['Germany' 50.0 83000.0]
 ['France' 37.0 67000.0]]

這里采用均值的策略補全了缺失數(shù)據(jù)育苟。

由于X[0],y是類別數(shù)據(jù),需要進行標(biāo)簽編碼,采用sklearn .preprocessing包下的LabelEncoder.

from sklearn.preprocessing import LabelEncoder

>>>  X[:,0] = LabelEncoder().fit_transform(X[:,0])
>>>  y = LabelEncoder().fit_transform(y)
>>>  print(y)
[0 1 0 0 1 1 0 1 0 1]

對于預(yù)測值采用標(biāo)簽編碼是沒有問題的椎木,然而违柏,在類目特征中博烂,標(biāo)簽編碼轉(zhuǎn)換是不夠的,國家一列漱竖,特征按照0-2順序編碼禽篱,這里還需要對數(shù)據(jù)進行亞編碼,one-hot encoding. 采用sklearn.preprocessing 包下的 OneHotEncoder

from sklearn.preprocessing import OneHotEncoder

>>> X = OneHotEncoder(categorical_features=[0]).fit_transform(X).toarray()
>>> print(X)

[[  1.00000000e+00   0.00000000e+00   0.00000000e+00   4.40000000e+01
    7.20000000e+04]
 [  0.00000000e+00   0.00000000e+00   1.00000000e+00   2.70000000e+01
    4.80000000e+04]
 [  0.00000000e+00   1.00000000e+00   0.00000000e+00   3.00000000e+01
    5.40000000e+04]
 [  0.00000000e+00   0.00000000e+00   1.00000000e+00   3.80000000e+01
    6.10000000e+04]
 [  0.00000000e+00   1.00000000e+00   0.00000000e+00   4.00000000e+01
    6.37777778e+04]
 [  1.00000000e+00   0.00000000e+00   0.00000000e+00   3.50000000e+01
    5.80000000e+04]
 [  0.00000000e+00   0.00000000e+00   1.00000000e+00   3.87777778e+01
    5.20000000e+04]
 [  1.00000000e+00   0.00000000e+00   0.00000000e+00   4.80000000e+01
    7.90000000e+04]
 [  0.00000000e+00   1.00000000e+00   0.00000000e+00   5.00000000e+01
    8.30000000e+04]
 [  1.00000000e+00   0.00000000e+00   0.00000000e+00   3.70000000e+01 
    6.70000000e+04]]

在回歸情況下馍惹,我們需要對特征值進行縮放躺率,年齡和薪酬是屬于不同量集的。

from sklearn.preprocessing import StandardScaler
sd = StandardScaler().fit(X)
X = sd.transform(X)
print(X)
[[  1.22474487e+00  -6.54653671e-01  -6.54653671e-01   7.58874362e-01
    7.49473254e-01]
 [ -8.16496581e-01  -6.54653671e-01   1.52752523e+00  -1.71150388e+00
   -1.43817841e+00]
 [ -8.16496581e-01   1.52752523e+00  -6.54653671e-01  -1.27555478e+00
   -8.91265492e-01]
 [ -8.16496581e-01  -6.54653671e-01   1.52752523e+00  -1.13023841e-01
   -2.53200424e-01]
 [ -8.16496581e-01   1.52752523e+00  -6.54653671e-01   1.77608893e-01
    6.63219199e-16]
 [  1.22474487e+00  -6.54653671e-01  -6.54653671e-01  -5.48972942e-01
   -5.26656882e-01]
 [ -8.16496581e-01  -6.54653671e-01   1.52752523e+00   0.00000000e+00
   -1.07356980e+00]
 [  1.22474487e+00  -6.54653671e-01  -6.54653671e-01   1.34013983e+00
    1.38753832e+00]
 [ -8.16496581e-01   1.52752523e+00  -6.54653671e-01   1.63077256e+00
    1.75214693e+00]
 [  1.22474487e+00  -6.54653671e-01  -6.54653671e-01  -2.58340208e-01
    2.93712492e-01]]

其他標(biāo)準(zhǔn)化縮放方法 如MinMaxScaler() 區(qū)間縮放万矾。

>>> min_max_scaler = preprocessing.MinMaxScaler()
>>> X = min_max_scaler.fit_transform(X)

歸一化方法 Normalizer()悼吱,將特征向量長度歸一到單位向量。

>>> normalizer = preprocessing.Normalizer().fit(X)  # fit does nothing
>>> normalizer.transform(X)

到此良狈,基本的數(shù)據(jù)預(yù)處理到此完成后添,接下來就是模型訓(xùn)練和預(yù)測拉~

其余的一些操作
#df之間合并
df = pd.concat([df1,df2])
#查看df的信息
df.info()
#查看各個維度的統(tǒng)計數(shù)據(jù),各個對象名稱
df.describe()
df.describe(include='o').columns
#統(tǒng)計某個維度的個數(shù)
print train_df['column_name'].value_counts()
#屬性列刪除
df= df.drop(['Name'], axis=1)
#刪除列中重復(fù)數(shù)據(jù),刪除某一列重復(fù)的數(shù)據(jù)
df = df.drop_duplicates()
df = df.drop_duplicates('columns_name')

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市薪丁,隨后出現(xiàn)的幾起案子吕朵,更是在濱河造成了極大的恐慌,老刑警劉巖窥突,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件努溃,死亡現(xiàn)場離奇詭異,居然都是意外死亡阻问,警方通過查閱死者的電腦和手機梧税,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來称近,“玉大人第队,你說我怎么就攤上這事∨俑眩” “怎么了凳谦?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長衡未。 經(jīng)常有香客問我尸执,道長,這世上最難降的妖魔是什么缓醋? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任如失,我火速辦了婚禮,結(jié)果婚禮上送粱,老公的妹妹穿的比我還像新娘褪贵。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布脆丁。 她就那樣靜靜地躺著世舰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪槽卫。 梳的紋絲不亂的頭發(fā)上冯乘,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音晒夹,去河邊找鬼裆馒。 笑死,一個胖子當(dāng)著我的面吹牛丐怯,可吹牛的內(nèi)容都是我干的喷好。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼读跷,長吁一口氣:“原來是場噩夢啊……” “哼梗搅!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起效览,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤无切,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后丐枉,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哆键,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年瘦锹,在試婚紗的時候發(fā)現(xiàn)自己被綠了籍嘹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡弯院,死狀恐怖辱士,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情听绳,我是刑警寧澤颂碘,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站椅挣,受9級特大地震影響头岔,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贴妻,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一切油、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧名惩,春花似錦、人聲如沸孕荠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弯予,卻和暖如春戚宦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背锈嫩。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工受楼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人呼寸。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓艳汽,卻偏偏與公主長得像,于是被迫代替她去往敵國和親对雪。 傳聞我的和親對象是個殘疾皇子河狐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 常用的數(shù)據(jù)預(yù)處理方式 Standardization, or mean removal and variance ...
    cnkai閱讀 2,192評論 0 5
  • 數(shù)據(jù)預(yù)處理是進行機器學(xué)習(xí)的必要環(huán)節(jié),對原始數(shù)據(jù)進行加工瑟捣,比如標(biāo)準(zhǔn)化馋艺、歸一化、二進制化迈套、特征編碼捐祠、插補缺失值、生成多...
    Jeriah閱讀 2,899評論 0 4
  • 周三因為昨天去了理工部署系統(tǒng)桑李,因為操作系統(tǒng)的事情所以今天還要繼續(xù)處理雏赦,但是打了很多電話,最后還是要自己弄芙扎,感覺打了...
    Even丶閱讀 179評論 0 0
  • 在萬物生發(fā)的三月,看了一部屬于夏天的電影圈浇。 電影名字據(jù)說之前叫《曇花》寥掐,后來改的《八月》,它的英文名是《The S...
    夜貓雜俎閱讀 498評論 0 0
  • 文/洛小簡 今年回家比往年更早一些或許是帶著愧疚的心變得更成熟與勤勞 帶著遺失四年的技術(shù)陪著嬸嬸和孩童們嫁接桑樹 ...
    洛小簡閱讀 343評論 4 4