機器學(xué)習(xí) Author:louwill mlxtend是一款高級的機器學(xué)習(xí)擴展庫,可用于日常機器學(xué)習(xí)任務(wù)的主要工具,也可以作為sklearn的一個補充和輔助工具。 mlxtend主要包括以下模塊:
下面分別從分類器、圖像、繪圖和預(yù)處理等幾個模塊來展示mlxtend的強大功能。 分類器 mlxtend提供了多種分類和回歸算法api,包括多層感知機、stacking分類器、邏輯回歸等。以邏輯回歸為例: from mlxtend.data import iris_data from mlxtend.plotting import plot_decision_regions from mlxtend.classifier import LogisticRegression import matplotlib.pyplot as plt
# Loading Data
X, y = iris_data() X = X[:, [0, 3]] # sepal length and petal width X = X[0:100] # class 0 and class 1 y = y[0:100] # class 0 and class 1
# standardize X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std() X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()
lr = LogisticRegression(eta=0.1, l2_lambda=0.0, epochs=100, minibatches=1, # for Gradient Descent random_seed=1, print_progress=3) lr.fit(X, y)
plot_decision_regions(X, y, clf=lr) plt.title('Logistic Regression - Gradient Descent') plt.show()
plt.plot(range(len(lr.cost_)), lr.cost_) plt.xlabel('Iterations') plt.ylabel('Cost') plt.show() 圖像 圖像模塊提供了人臉特征點提取的api,示例如下:
可視化展示: fig = plt.figure(figsize=(15, 5)) ax = fig.add_subplot(1, 3, 1) ax.imshow(img) ax = fig.add_subplot(1, 3, 2) ax.scatter(landmarks[:, 0], -landmarks[:, 1], alpha=0.8) ax = fig.add_subplot(1, 3, 3) img2 = img.copy() for p in landmarks: img2[p[1]-3:p[1]+3,p[0]-3:p[0]+3,:] = (255, 255, 255) ax.imshow(img2) plt.show() 展示人臉特征點:
Coordinates of the Left Eye: [169.33333333 156. ] Coordinates of the Right Eye: [210.83333333 152.16666667] 繪圖 mlxtend的繪圖模塊提供了各種機器學(xué)習(xí)輔助繪圖工具,比如分類散點圖、熱圖、決策邊界圖、多分類混淆矩陣圖等等。以多分類混淆矩陣圖為例,sklearn的plot_confusion模塊只提供了繪制二分類的混淆矩陣圖,如果想繪制多分類的混淆矩陣,嘗試使用mlxtend的plot_confusion_matrix函數(shù)。示例如下:
再來看如何繪制模型的決策邊界圖。比如我們想看看SVM在iris數(shù)據(jù)集上的分類效果,嘗試?yán)L制其決策邊界圖: from mlxtend.plotting import plot_decision_regions import matplotlib.pyplot as plt from sklearn import datasets from sklearn.svm import SVC
# Loading some example data iris = datasets.load_iris() X = iris.data[:, [0, 2]] y = iris.target
# Training a classifier svm = SVC(C=0.5, kernel='linear') svm.fit(X, y)
# Plotting decision regions plot_decision_regions(X, y, clf=svm, legend=2)
# Adding axes annotations plt.xlabel('sepal length [cm]') plt.ylabel('petal length [cm]') plt.title('SVM on Iris') plt.show() 預(yù)處理 mlxtend預(yù)處理模塊提供了各種數(shù)據(jù)標(biāo)準(zhǔn)化和歸一化方法,這里以分類變量的one-hot編碼為例。mlxtend下的one_hot可對列表或numpy數(shù)組的數(shù)據(jù)進行轉(zhuǎn)換:
from mlxtend.preprocessing import one_hot # list y = [0, 1, 2, 1, 2] one_hot(y) mlxtend其他模塊和更多功能參考官方文檔: http://rasbt./mlxtend/ GitHub源碼地址: https://github.com/rasbt/mlxtend 參考資料: http://rasbt./mlxtend/user_guide |
|