1. 程式人生 > >機器學習sklearn iris資料集官方demo

機器學習sklearn iris資料集官方demo

sklearn是谷歌開發的一個機器學習框架,也是很多小夥伴在學習機器學習的時候最早接觸的東西。sklearn中自帶了四個小資料集,其中一個很常用的就是iris鳶尾花資料集,很多學習演算法都可以在這個例子上進行實驗。

所以,本文我把sklearn官方關於這個資料集在PCA演算法上的一個應用程式碼貼出來,加了一些中文註釋和我的解釋。

# Code source: Gaël Varoquaux
# Modified for documentation by Jaques Grobler
# License: BSD 3 clause
#以上為官方作者資訊

#iris鳶尾花資料集包含3個不同品種的鳶尾花(Setosa,Versicolour,and Virginica)資料,花瓣和萼片長度,儲存在一個150*4的 numpy.ndarry中
#150行4列,150行指150多花,4列分別是Sepal Length,Sepal Width, Petal Length and Petal Width
#sklearn 官方demo

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D   #
from sklearn import datasets
from sklearn.decomposition import PCA  #PCA 主成分分析

#匯入資料
iris = datasets.load_iris()
X = iris.data[:,:2]  #指選擇第一個和第三個特徵作為輸入
y = iris.target   # 輸出

x_min,x_max = X[:,0].min()-.5, X[:,0].max()+.5
y_min,y_max = X[:,1].min()-.5, X[:,1].max()+.5

plt.figure(2,figsize=(8,6))
plt.clf()

#繪製訓練點
plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.Set1,edgecolor='k')
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')#以花瓣長度和寬度為橫縱座標繪製一個圖

plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.xticks(())
plt.yticks(())

#為了更好了解維度關係
#繪製一個3維的PCA
fig = plt.figure(1,figsize=(8,6))
ax = Axes3D(fig, elev=-150, azim=110)
X_reduced = PCA(n_components=3).fit_transform(iris.data)
ax.scatter(X_reduced[:, 0],X_reduced[:, 1], X_reduced[:, 2],c=y, cmap=plt.cm.Set1, edgecolor='k', s=40)


ax.set_title("First three PCA directions")
ax.set_xlabel("1st eigenvector")
ax.w_xaxis.set_ticklabels([])
ax.set_ylabel("2ed eigenvector")
ax.w_yaxis.set_ticklabels([])
ax.set_zlabel("3rd eigenvector")
ax.w_zaxis.set_ticklabels([])


plt.show()
這裡利用了一個Python裡一個3D繪圖包mplot3d,這個包的功能很強大,後面單獨寫幾篇文章介紹幾個例子。