老师则段代码绘图部分不太明白

来源:7-6 scikit-learn中的PCA

fsdfh

2018-09-05

http://img.mukewang.com/szimg/5b8fc6ee0001f08319201080.jpg

写回答

1回答

liuyubobobo

2018-09-06

我们实际上绘制了10个散点图(for循环),将这10个散点图叠加在了一起,最后一起显示出来(plt.show())。


对于这十个散点图,每个图绘制的是一个数字对应的分类。即所有y==0的点绘制一次,y==1的点绘制一次,y==2的点绘制一次,以此类推,每次绘制是调用一次scatter。每次绘制数字k所对应的所有的数据点,从X_reduction中取出y==k所对应的所有数据的横纵坐标。即X_reduction[y==k, 0]和X_reduction[y==k, 1]。


对于这个绘制过程,其实和我们在第三章12小节绘制iris数据集的方法是一样的。回忆一下以下代码:)

//img.mukewang.com/szimg/5b90327600014ba504970360.jpg


区别只在于:

1)我们使用循环,而非罗列十行scatter:)

2)我们没有指定颜色,因为指定十个颜色太麻烦了,每次scatter,matplotlib会自动为我们换一个颜色:)


如果对这个绘制还有疑问,可以参考这个问答:https://coding.imooc.com/learn/questiondetail/36343.html


加油!:)

0
1
慕少1032305
谢谢老师!我也是看到这里不太懂,不过看了老师的回复就懂了!实际上是y==0,1,2,3...9的布尔值组成的索引,使用fancy_index的方式取出X中对应特征的行。而两个X_reduction对应的是降维后二维平面的x和y轴,这样做就相当于把64个特征(这里取前10个特征)的数据映射到二维坐标系中,达到了可视化的效果!
2019-09-30
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5839 学习 · 2437 问题

查看课程