机器学习sklearn iris数据集官方demo

来源:互联网 发布:物美价廉的男装淘宝店 编辑:程序博客网 时间:2024/05/23 11:48

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 官方demoimport matplotlib.pyplot as pltfrom mpl_toolkits.mplot3d import Axes3D   #from sklearn import datasetsfrom 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()+.5y_min,y_max = X[:,1].min()-.5, X[:,1].max()+.5plt.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维的PCAfig = 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,这个包的功能很强大,后面单独写几篇文章介绍几个例子。

阅读全文
0 0
原创粉丝点击