Page 75 - 高中 信息技术 选择性必修4 人工智能初步
P. 75

 3.3 聚类







                         Scikit-learn为我们提供了封装好的K-Means聚类算法,这里仅仅演示怎么使用封装好
                    的K-Means聚类算法来进行聚类,并使用Matplotlib库绘制聚类结果以便直观感受。
                         (1)首先调用Scikit-learn中的K-Means聚类算法和数据集,然后加载Iris数据集。



                        from sklearn.cluster import KMeans
                        from sklearn import datasets

                        iris = datasets.load_iris(  )  # 加载鸢尾花数据集Iris
                        X = iris.data
                        y = iris.target

                                             广东教育出版社
                         (2)初始化三个不同的K-Means聚类模型。对第三个模型,将参数“n_init”固定为
                    1,减少算法用不同簇心运行的次数而只运行一次,默认连续运行10次输出最佳结果。



                        estimators = [('k_means_iris_8', KMeans(n_clusters=8)),
                                            ('k_means_iris_3', KMeans(n_clusters=3)),
                                            ('k_means_iris_bad_init', KMeans(n_clusters=3, n_init=1, init='random'))]



                         (3)可视化三个模型的聚类结果,并进行比较。



                        fignum = 1
                        titles = ['8个簇', '3个簇', '3个簇, 随机初始化较差']
                        for name, est in estimators:

                           fig = plt.figure(fignum, figsize=(4, 3))
                           ax = Axes3D(fig, rect=[0, 0, .95, 1], elev=48, azim=134)
                           est.fit(X)
                           labels = est.labels_

                           ax.scatter(X[:, 3], X[:, 0], X[:, 2],c=labels.astype(np.float), edgecolor='k')
                           ax.w_xaxis.set_ticklabels([])

                           ax.w_yaxis.set_ticklabels([])
                           ax.w_zaxis.set_ticklabels([])
                           ax.set_xlabel('花瓣宽度')
                           ax.set_ylabel('萼片长度')

                           ax.set_zlabel('花瓣长度')
                           ax.set_title(titles[fignum - 1])
                           ax.dist = 12

                           fignum = fignum + 1




                                                                                                                    67 67







          21Y3228.indd   67                                                                                        2019/10/10   14:23:56
   70   71   72   73   74   75   76   77   78   79   80