Scikit-learn是目前Python環境下最常用也是最好用的機器學習函數庫。Sklean裡邊幾乎集成了所有經典的機器學習算法,同時配以非常簡單的實現語句(通常為1-2行代碼)以及模式化的調參過程,使得我們可以花費更多時間在特徵工程及數據處理上,並且使得我們建模的過程集中於算法比較以及模型選擇上。
當然,Sklearn並不是沒有他的弊端,比如過於簡單的語句使得其功能相對固定,這就讓我們構建定製化的模型變得相對困難。以個人經驗來說,當我們需要換掉模型中的損失函數或其他一些評判方式時,我們必須從原始碼中找出對應模塊,然後按照原始碼的方式來編寫自己需要的程序。
雖然聽起來很麻煩,但Sklearn還是為我們提供了非常大的便利,如果每一個算法都要由我們自己從零開始搭建的話,且不說費時費力,單單是代碼的可靠性我們就已經無法保證。從這個角度來講,Sklearn的確是目前機器學習的首選函數庫。
Sklearn內部有非常多的模塊,每個模塊的功能都很豐富,但是調用的方式卻基本上是一致的。如下代碼所示,我們這裡邊用到了Sklearn的預處理模塊,用到了K-NN算法構建模型,用到了訓練集及測試集分離模塊等等,從中不難看出,讀Sklearn的代碼像是在讀文章一樣,一目了然且很容易get到寫代碼者的意圖。
from sklearn import neighbors, datasets, preprocessing
from sklearn.cross_validation import train_test_split
from sklearn.metrics import accuracy_score
iris = datasets.load_iris()
X, y = iris.data[:, :2], iris.target
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=33)
scaler = preprocessing.StandardScaler().fit(X_train)
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
knn = neighbors.KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)
accuracy_score(y_test, y_pred)
標準化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(X_train)
standardized_X = scaler.transform(X_train)
standardized_X_test = scaler.transform(X_test)
歸一化
from sklearn.preprocessing import Normalizer
scaler = Normalizer().fit(X_train)
normalized_X = scaler.transform(X_train)
normalized_X_test = scaler.transform(X_test)
二值化
from sklearn.preprocessing import Binarizer
binarizer = Binarizer(threshold=0.0).fit(X)
binary_X = binarizer.transform(X)
分類變量的編碼
from sklearn.preprocessing import LabelEncoder
enc = LabelEncoder()
y = enc.fit_transform(y)
補全缺失值
from sklearn.preprocessing import Imputer
imp = Imputer(missing_values=0, strategy='mean', axis=0)
imp.fit_transform(X_train)
創建高次冪特徵
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(5)
poly.fit_transform(X)
監督學習模型
# 線性回歸
from sklearn.linear_model import LinearRegression
lr = LinearRegression(normalize=True)
# 樸素貝葉斯
from sklearn.naive_bayes import GaussianNB
gnb = GaussianNB()
# K-NN算法
from sklearn import neighbors
knn = neighbors.KNeighborsClassifier(n_neighbors=5)
# 支持向量機(SVM)
from sklearn.svm import SVC
svc = SVC(kernel='linear』)
無監督學習
# 主成分分析(PCA)
from sklearn.decomposition import PCA
pca = PCA(n_components=0.95)
# K Means聚類
from sklearn.cluster import KMeans
k_means = KMeans(n_clusters=3, random_state=0)
構建模型
# 監督學習
# 用數據構建模型
lr.fit(X, y)
knn.fit(X_train, y_train)
svc.fit(X_train, y_train)
# 無監督學習
# 用數據構建模型
k_means.fit(X_train)
# 用數據構建模型並改變數據形式
pca_model = pca.fit_transform(X_train)
利用模型進行預測
# 監督學習
y_pred=svc.predict(np.random((2,5))) # 預測標籤
y_pred=lr.predict(x_test) # 預測標籤
y_pred=knn.predict_proba(x_test) # 預測為某一類別的可能性
# 無監督學習
y_pred=k_means.predict(x_test) # 預測屬於哪個聚類
今天為大家簡單介紹了Sklearn內的語句以及構建模型的流程,同時也為大家展示了Sklearn語句的格式,總體來講是很好記憶的,具體的細節需要大家參考Sklearn的官方文檔來細緻的了解。
想成為一名合格的機器學習工程師嗎?關注「機器學習學社」獲取每天一份的新鮮諮詢,為你開拓屬於你自己的機器學習之路