python之sklearn
python之sklearn–鸢尾花数据集之数据降维(PCA主成分分析)
sklearn库:Scikit - learn(sklearn)是一个用于机器学习的开源 Python 库。它建立在 NumPy、SciPy 和 matplotlib 等其他科学计算库之上,为机器学习的常见任务提供了简单高效的工具,包括分类、回归、聚类、降维、模型选择和预处理等多种算法。
下载sklearn库:pip install scikit-learn
分模块解析
1.导入需要的模块
from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Axes3D from sklearn import datasets from sklearn.decomposition import PCA #PCA:主成分分析 1234
2.加载数据
iris = datasets.load_iris() #加载鸢尾花数据集 x = iris.data[:,:2] #仅考察前两个特征,即鸢尾花花萼的长宽 y = iris.target 123
3.计算用于绘制二维散点图时,x轴(花萼长度)和y轴(花萼宽度)的坐标范围
通过减去和加上0.5来适当扩展范围,使可视化效果更好。
x_min,x_max = x[:,0].min() - .5,x[:,0].max() + .5 y_min,y_max = x[:,1].min() - .5,x[:,1].max() + .5 12
4.绘制二维散点图
plt.figure(1,figsize=(6,4)) #创建编号为 1,大小为 (6, 4) 的图形 plt.clf() #清除当前图形窗口中的内容 plt.scatter(x[:,0],x[:,1],c=y,cmap=plt.cm.Set1,edgecolors='k') 123
scatter 函数用于绘制散点图,直观地展示数据点在二维空间中的分布情况通过。
X_reduced[:,0] 表示取这个数据集中每一行的第 1 列数据,作为散点图中每个点的 x 坐标;
X_reduced[:,1] 取每一行的第 2 列数据,作为 y 坐标;
c=y根据样本的类别标签来给点赋予不同的颜色(颜色映射使用plt.cm.Set1)。
cmap=plt.cm.Set1 是 matplotlib 中预定义的一种颜色映射,它能够提供一组离散的、区分度较高的颜色,适合用于区分不同类别等情况。
edgecolors=‘k’ : edgecolor 参数用于指定散点的边缘颜色,'k’表示黑色的—>‘black’
绘制二维图
plt.xlabel('Sepal length') #x轴标签名称 plt.ylabel('Sepal wigth') #y轴标签名称 plt.xlim(x_min,x_max) #设置x坐标范围 plt.ylim(y_min,y_max) #设置y坐标范围 plt.xticks(()) #去掉x坐标轴上的刻度标记 plt.yticks(()) #去掉y坐标轴上的刻度标记 123456 进行主成分分析并绘制 3D 散点图
fig = plt.figure(2,figsize=(6,4)) #创建编号为 2,大小为 (6, 4) 的图形 plt.clf() #用于清除当前图形(Figure)对象中的所有内容 # ax = fig.add_subplot(1,1,1,projection = '3d') #这句代码也是可以做3D图形的 ax = Axes3D(fig,elev=-150,azim=110) 123456
该图形窗口中创建一个 3D 坐标轴对象,并且通过elev(仰角)和azim(方位角)参数设置了视角,方便观察 3D 散点图的效果。
X_reduced = PCA(n_components=3).fit_transform(iris.data) 1
使用PCA类对鸢尾花数据集的所有特征(这里没有像前面二维可视化那样只取部分特征)进行主成分分析。 将数据降到 3维空间(通过n_components=3指定),得到降维后的数据集X_reduced。
ax.scatter(X_reduced[:,0],X_reduced[:,1],X_reduced[:,2],c=y,cmap=plt.cm.Set1,edgecolor='k',s=40) #s是散点的大小 ax.set_title('First three PCA directions') #设置标题 ax.set_xlabel('1st eigenvector') #设置x标签--第一特征向量 ax.xaxis.set_ticklabels([]) #去掉x刻度显示 ax.set_ylabel('2nd eigenvector') #设置y标签--第二特征向量 ax.yaxis.set_ticklabels([]) #去掉y刻度显示 ax.set_zlabel('3rd eigenvector') #设置z标签--第三特征向量 ax.zaxis.set_ticklabels([]) #去掉z刻度显示 plt.show() 显示图片 123456789
完整代码
from matplotlib import pyplot as plt from mpl_toolkits.mplot3d import Axes3D from sklearn import datasets from sklearn.decomposition import 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(1,figsize=(6,4)) plt.clf() plt.scatter(x[:,0],x[:,1],c=y,cmap=plt.cm.Set1,edgecolors='k') plt.xlabel('Sepal length') plt.ylabel('Sepal wigth') plt.xlim(x_min,x_max) plt.ylim(y_min,y_max) plt.xticks(()) plt.yticks(()) fig = plt.figure(2,figsize=(6,4)) plt.clf() #ax = fig.add_subplot(1,1,1,projection = '3d') ax = Axes3D(fig,elev=-150,azim=110) plt.cla() 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.xaxis.set_ticklabels([]) ax.set_ylabel('2nd eigenvector') ax.yaxis.set_ticklabels([]) ax.set_zlabel('3rd eigenvector') ax.zaxis.set_ticklabels([]) plt.show() 1234567891011121314151617181920212223242526272829303132333435363738394041
运行结果图
1.鸢尾花–iris二维散点图
1.鸢尾花–iris三维散点图
相关知识
python 怎么加载鸢尾花数据
数据分割的艺术:揭秘Sklearn中的分割技巧
机器学习教程 之 SKlearn 中 PCA 算法的运用:人脸识别实例
学好Python=基础学科能力+业务知识+ IT技术
python的鸢尾花数据如何导入
用Python识别花卉种类,并自动整理分类!
【Python】基于sklearn构建并评价聚类模型( KMeans、TSNE降维、可视化、FMI评价法等)
sklearn机器学习支持向量机案例解析
python 鸢尾花数据集下载
【python数据挖掘课程】十九.鸢尾花数据集可视化、线性回归、决策树花样分析
网址: python之sklearn https://www.huajiangbk.com/newsview1544669.html
上一篇: 将鸢尾花数据导入MATLAB的详 |
下一篇: ML之DT:利用DT(DTC)实 |
推荐分享

- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039