对下面代码进行结果分析import numpy as np from sklearn.cluster import MiniBatchKMeans from sklearn.datasets import load_iris from sklearn import preprocessing import matplotlib.pyplot as plt np.random.seed(5) from sklearn.cluster import KMeans from sklearn.metrics import silhouette_score from pylab import mpl # 设置显示中文字体 mpl.rcParams["font.sans-serif"] = ["SimHei"] # 设置正常显示符号 mpl.rcParams["axes.unicode_minus"] = False # 加载鸢尾花数据集 iris = load_iris() X = iris.data y = iris.target #最小最大标准化 min_max_scaler = preprocessing.MinMaxScaler() X_minmax=min_max_scaler.fit_transform(X) batch_size =15 num_cluster =3 #K均值算法拟合 clf=MiniBatchKMeans(n_clusters=num_cluster,batch_size=batch_size,init="random") clf.fit(X_minmax) #拟合中心 centers = clf.cluster_centers_ #预测标签 pre_clu=clf.labels_ print(pre_clu) vmarker={0:'^',1:'s',2:'D',} mValue=[vmarker[i] for i in pre_clu] for _marker, _x, _y in zip(mValue, X_minmax[:,1],X_minmax[:,2]): plt.scatter(_x, _y,marker=_marker,c="grey") plt.scatter(centers[:,1],centers[:,2],marker="*",s=200,c='black') plt.show() # 轮廓系统法最佳k值 def sc_k(): K = range(2, 10) score = [] for k in K: kmeans = KMeans(n_clusters=k) kmeans.fit(iris.data) score.append(silhouette_score(iris.data, kmeans.labels_, metric='euclidean')) plt.plot(K, score, 'r*-') plt.xlabel('k') plt.ylabel(u'轮廓系数') plt.title(u'轮廓系数确定最佳的K值') plt.show() sc_k()
时间: 2024-03-31 21:37:23 浏览: 126
Python 机器学习工具包SKlearn的安装与使用
5星 · 资源好评率100%
这段代码使用MiniBatchKMeans算法对鸢尾花数据集进行了聚类,并展示了聚类结果和最佳的K值。
具体分析如下:
1. 数据预处理:使用MinMaxScaler对数据进行了最小最大标准化处理,将所有特征缩放到0到1之间。
2. 聚类过程:使用MiniBatchKMeans算法对处理后的数据进行聚类,聚为3类。拟合完成后,输出预测标签pre_clu。
3. 可视化:将聚类结果可视化,将数据点按照聚类标签的不同用不同形状的标记表示,并将聚类中心用黑色星号标记出来。
4. 最佳K值:使用轮廓系数法求解最佳的K值。在这段代码中,使用了KMeans算法对iris数据进行聚类,计算不同K值下的轮廓系数,并将结果可视化。从图中可以看出,轮廓系数达到最大值时,对应的K值为2或3。
因此,根据这段代码的聚类结果和轮廓系数法的求解结果,可以将鸢尾花数据集聚为3类,聚类质量相对较好。
阅读全文