机器学习第1天:数据预处理
文章目錄
- 一、預(yù)備知識
- 二、具體實現(xiàn)步驟
- 第1步:導(dǎo)入庫
- 第2步:導(dǎo)入數(shù)據(jù)集
- 第3步:處理丟失數(shù)據(jù)
- 第4步:解析分類數(shù)據(jù)
- 創(chuàng)建虛擬變量
- 第5步:拆分?jǐn)?shù)據(jù)集為訓(xùn)練集合和測試集合
- 第6步:特征標(biāo)準(zhǔn)化
- 三、知識點詳解
- 1. Imputer處理缺損數(shù)據(jù)
- 2. 關(guān)于fit()、transform()、fit_transform()
- 3. StandardScaler標(biāo)準(zhǔn)化
- 4. OneHotEncoder處理的原因
- 5. LabelEncoder處理的原因
----- 代碼傳送門 -----
----- 數(shù)據(jù)傳送門-----
一、預(yù)備知識
- pandas、numpy基本用法有所了解
- 對什么是機器學(xué)習(xí)有簡單的了解
二、具體實現(xiàn)步驟
第1步:導(dǎo)入庫
import numpy as np import pandas as pd第2步:導(dǎo)入數(shù)據(jù)集
dataset = pd.read_csv('Data.csv') X = dataset.iloc[ : , :-1].values Y = dataset.iloc[ : , 3].values第3步:處理丟失數(shù)據(jù)
from sklearn.impute import SimpleImputer imputer = SimpleImputer(missing_values = "NaN", strategy = "mean", axis = 0) imputer = imputer.fit(X[ : , 1:3]) X[ : , 1:3] = imputer.transform(X[ : , 1:3])第4步:解析分類數(shù)據(jù)
from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_X = LabelEncoder() X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])創(chuàng)建虛擬變量
onehotencoder = OneHotEncoder(categorical_features = [0]) X = onehotencoder.fit_transform(X).toarray() labelencoder_Y = LabelEncoder() Y = labelencoder_Y.fit_transform(Y)第5步:拆分?jǐn)?shù)據(jù)集為訓(xùn)練集合和測試集合
from sklearn.model_selection import train_test_split X_train, X_test, Y_train, Y_test = train_test_split( X , Y , test_size = 0.2, random_state = 0)第6步:特征標(biāo)準(zhǔn)化
from sklearn.preprocessing import StandardScaler sc_X = StandardScaler() X_train = sc_X.fit_transform(X_train) X_test = sc_X.transform(X_test)三、知識點詳解
1. Imputer處理缺損數(shù)據(jù)
imputer = SimpleImputer(missing_values = 'NaN', strategy="mean",axis=0)strategy取值支持三種,mean(均值),median(中位數(shù)),most_frequent(眾數(shù)),默認(rèn)mean,axis=0表示按列進行
具體用法見:數(shù)據(jù)清洗(二)——缺失值處理
2. 關(guān)于fit()、transform()、fit_transform()
通俗的來講fit()表示建立一個“詞典”,transform()表示在建立的“詞典”中查找單詞,而fit_transform()表示先建立“詞典”然后又在里面查找。
例如:有數(shù)據(jù)A、B、C,利用fit建立一個“詞典”,在“詞典”中A代表1、B代表2、C代表3,而后transform()通過“詞典”將A轉(zhuǎn)化為1、B轉(zhuǎn)化為2、C轉(zhuǎn)化為3。
labelencoder_Y.fit_transform(Y) onehotencoder.fit_transform(X).toarray() sc_X.fit_transform(X_train)fit_transform()前面的參數(shù)則代表有著不同規(guī)則的“詞典”
比較規(guī)范的解釋:fit()是為計算該類處理所需的相關(guān)參數(shù),以標(biāo)準(zhǔn)化為例,fit()就是計算標(biāo)準(zhǔn)化所用到的均值與方差;而transform()函數(shù)則是利用fit()的結(jié)果作為參數(shù)對數(shù)據(jù)進行相應(yīng)的處理,比如正規(guī)化。fit_transform()就是先調(diào)用fit(),后調(diào)用transform()。
3. StandardScaler標(biāo)準(zhǔn)化
StandardScaler標(biāo)準(zhǔn)化:將特征數(shù)據(jù)的分布調(diào)整成標(biāo)準(zhǔn)正太分布,也叫高斯分布,也就是使得數(shù)據(jù)的均值維0,方差為1。
標(biāo)準(zhǔn)化的原因在于如果有些特征的方差過大,則會主導(dǎo)目標(biāo)函數(shù)從而使參數(shù)估計器無法正確地去學(xué)習(xí)其他特征。
更詳細(xì)的解釋見:預(yù)處理數(shù)據(jù)的方法總結(jié)
4. OneHotEncoder處理的原因
由于特征可能是連續(xù)型的也可能是類別型的變量,這些類別特征無法直接進入模型。要想使得類別型的變量能最終被模型直接使用,可以使用one-of-k編碼或者one-hot編碼。OneHotEncoder它可以將有n種值的一個特征變成n個二元的特征。
更詳細(xì)的解釋見:預(yù)處理數(shù)據(jù)的方法總結(jié)
5. LabelEncoder處理的原因
將數(shù)據(jù)標(biāo)簽化,利于模型的建立
有不足或者不對的地方歡迎留言指正!!!
總結(jié)
以上是生活随笔為你收集整理的机器学习第1天:数据预处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 知识点讲解五:处理js异步加载问题
- 下一篇: 机器学习100天:专栏目录