100-Days-Of-ML-Code(Day_01)完整理解

最近火爆git的100-Days-Of-ML-Code,內容有易到難,整體來說還是很不錯的,可以看得出博主Avik-Jain的用心良苦。本人也參與其中,對於裏面一些用到的函數進行了一些總結,方便後來的童鞋方便查詢。用到的數據集在這:Data.csv。git地址:100-Days-of-ml

#step1: 導入相應的包
import numpy as np
import pandas as pd

#step2:導入數據集
data = pd.read_csv('./Data.csv', encoding='gb18030')
X = data.iloc[: , :-1].values
Y = data.iloc[: , 3].values
#step3:處理缺失數據 NaN
'''
這裏解釋一下transform和fit_transform
fit(x,y)傳兩個參數的是有監督學習的算法,fit(x)傳一個參數的是無監督學習的算法,比如降維、特徵提取、標準化
fit和transform沒有任何關係,僅僅是數據處理的兩個不同環節,之所以出來這麼個函數名,僅僅是爲了寫代碼方便,
所以會發現transform()和fit_transform()的運行結果是一樣的。
注意:運行結果一模一樣不代表這兩個函數可以互相替換,絕對不可以!!!
transform函數是一定可以替換爲fit_transform函數的
fit_transform函數不能替換爲transform函數!!!理由解釋如下:
 sklearn裏的封裝好的各種算法都要fit、然後調用各種API方法,transform只是其中一個API方法,
 所以當你調用除transform之外的方法,必須要先fit,爲了通用的寫代碼,還是分開寫比較好 
也就是說,這個fit相對於transform而言是沒有任何意義的,但是相對於整個代碼而言,fit是爲
後續的API函數服務的,所以fit_transform不能改寫爲transform。
'''
from sklearn.preprocessing import Imputer
imputer = Imputer(missing_values= "NaN", strategy="mean", axis=0)
imputer = imputer.fit(X[:, 1:3])
X[:, 1:3] = imputer.transform(X[:, 1:3])

#step4:編碼解析分類數據
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
 #創建一個虛擬變量
#categorical_features = 'all',這個參數指定了對哪些特徵進行編碼,默認對所有類別都進行編碼。
# 也可以自己指定選擇哪些特徵,通過索引或者 bool 值來指定
onehotencoder = OneHotEncoder(categorical_features=[0]) #等價於true(第一列特徵),表示就對第一列特徵進行編碼
X = onehotencoder.fit_transform(X).toarray() #或者這裏也可以在上一行設置成OneHotEnconder(sparse = False)就不需要.toarray()
labelencoder_Y = LabelEncoder()
Y = labelencoder_Y.fit_transform(Y)  #疑問,爲什麼這裏不用將Y轉換成OneHotEncoder編碼形式?

#step5:把數據分爲訓練集和測試集
from sklearn.cross_validation import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)

#step6:特徵縮放
from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test= sc_X.fit_transform(X_test)

總結:整得來說,第一篇的還是比較基礎性的,關於one-hot編碼之前沒學過,今晚理解了一晚上終於理解透徹了,改天寫篇相關博客。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章