數(shù)據(jù)預(yù)處理分為6步:
第1步:導(dǎo)入NumPy和Pandas庫。NumPy和Pandas是每次都要導(dǎo)入的庫,其中Numpy包含了數(shù)學(xué)計算函數(shù),Pnadas是一個用于導(dǎo)入和管理數(shù)據(jù)集(Data Sets)的類庫。
第2步:導(dǎo)入數(shù)據(jù)集嘉栓。數(shù)據(jù)集一般都是.csv格式,csv文件以文本形式存儲數(shù)據(jù)。每一行數(shù)據(jù)是一條記錄侵佃。我們使用pandas類庫的read_csv方法讀取本地的csv文件作為一個dataframe麻昼。然后從datafram中分別創(chuàng)建自變量和因變量的矩陣和向量。
第3步:處理缺失的數(shù)據(jù)趣钱。我們得到的數(shù)據(jù)很少是完整的。數(shù)據(jù)可能因為各種原因丟失胚宦,為了不降低機器學(xué)習(xí)模型的性能首有,需要處理數(shù)據(jù)。我們可以用整列的平均值或者中間值替換丟失的數(shù)據(jù)枢劝。我們用sklearn.preprocessing庫中的Inputer類完成這項任務(wù)井联。
第4步:對分類數(shù)據(jù)進(jìn)行編碼。分類數(shù)據(jù)指的是含有標(biāo)簽值而不是數(shù)字值得變量您旁。取值范圍通常是固定的烙常。例如“YES”和“NO”不能用于模型的數(shù)學(xué)計算,所以需要編碼成數(shù)字鹤盒。為數(shù)顯這一功能蚕脏,我們從sklearn.preprocessing庫中導(dǎo)入LabelEncoder類撩荣。
第5步:拆分?jǐn)?shù)據(jù)集為測試集合和訓(xùn)練集合季惩。把數(shù)據(jù)集拆分成兩個弛作,一個是用來訓(xùn)練模型的訓(xùn)練集合屁擅,另一個是用來驗證模型的測試集合曹步。兩種比例一般是80:20梯码。我們導(dǎo)入sklearn.crossvalidation庫中的train_test_split()方法宁玫。
第6步:特征縮放固惯。大部分模型算法使用兩點間的歐式近距離表示亲桥,但此特征在幅度洛心、單位和范圍姿態(tài)問題上變化很大。在距離計算中题篷,高幅度的特征比低幅度特征權(quán)重大词身。可用特征標(biāo)準(zhǔn)化或Z值歸一化解決番枚。導(dǎo)入sklearn.preprocessing庫的StandardScalar類偿枕。
代碼如下:?視頻教學(xué)QQ群? ? 519970686
1Step1:?導(dǎo)入類庫
2
3importnumpyasnp
4importpandasaspd
5
6Step2:?導(dǎo)入數(shù)據(jù)集
7dataset?=?pd.read_csv('Data.csv')
8X?=?dataset.iloc[?:?,?:-1].values
9Y?=?dataset.iloc[?:?,3].values
10
11Step3:?處理缺失的數(shù)據(jù)
12fromsklearn.preprocessingimportImputer
13imputer?=?Imputer(missing_values?="NaN",?strategy?="mean",?axis?=0)
14imputer?=?imputer.fit(X[?:?,1:3])
15X[?:?,1:3]?=?imputer.transform(X[?:?,1:3])
16
17Step4:編碼分類數(shù)據(jù)
18fromsklearn.preprocessingimportLabelEncoder,?OneHotEncoder
19labelencoder_X?=?LabelEncoder()
20X[?:?,0]?=?labelencoder_X.fit_transform(X[?:?,0])
21Creating?a?dummy?variable
22
23onehotencoder?=?OneHotEncoder(categorical_features?=?[0])
24X?=?onehotencoder.fit_transform(X).toarray()
25labelencoder_Y?=?LabelEncoder()
26Y?=??labelencoder_Y.fit_transform(Y)
27
28Step5:?切分?jǐn)?shù)據(jù)集成訓(xùn)練數(shù)據(jù)和測試數(shù)據(jù)
29fromsklearn.cross_validationimporttrain_test_split
30X_train,?X_test,?Y_train,?Y_test?=?train_test_split(?X?,?Y?,?test_size?=0.2,?random_state?=0)
31
32Step6:?特征縮放
33fromsklearn.preprocessingimportStandardScaler
34sc_X?=?StandardScaler()
35X_train?=?sc_X.fit_transform(X_train)
36X_test?=?sc_X.fit_transform(X_test)