22043104+范纬.zip
资源内容介绍
22043104+范纬.zip <link href="/image.php?url=https://csdnimg.cn/release/download_crawler_static/css/base.min.css" rel="stylesheet"/><link href="/image.php?url=https://csdnimg.cn/release/download_crawler_static/css/fancy.min.css" rel="stylesheet"/><link href="/image.php?url=https://csdnimg.cn/release/download_crawler_static/89507098/raw.css" rel="stylesheet"/><div id="sidebar" style="display: none"><div id="outline"></div></div><div class="pf w0 h0" data-page-no="1" id="pf1"><div class="pc pc1 w0 h0"><img alt="" class="bi x0 y0 w1 h1" src="/image.php?url=https://csdnimg.cn/release/download_crawler_static/89507098/bg1.jpg"/><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">1.</div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0">import numpy as np</div><div class="t m0 x1 h2 y3 ff1 fs0 fc0 sc0 ls0 ws0">import pandas as pd</div><div class="t m0 x1 h2 y4 ff1 fs0 fc0 sc0 ls0 ws0">import matplotlib.pyplot as plt</div><div class="t m0 x1 h2 y5 ff1 fs0 fc0 sc0 ls0 ws0">from mpl_toolkits.mplot3d import Axes3D</div><div class="t m0 x1 h2 y6 ff1 fs0 fc0 sc0 ls0 ws0">import warnings</div><div class="t m0 x1 h2 y7 ff1 fs0 fc0 sc0 ls0 ws0">warnings.filterwarnings(action = 'ignore')</div><div class="t m0 x1 h2 y8 ff1 fs0 fc0 sc0 ls0 ws0">%matplotlib inline</div><div class="t m0 x1 h2 y9 ff1 fs0 fc0 sc0 ls0 ws0">plt.rcParams['font.sans-serif']=['SimHei'] </div><div class="t m0 x1 h2 ya ff1 fs0 fc0 sc0 ls0 ws0">plt.rcParams['axes.unicode_minus']=False</div><div class="t m0 x1 h2 yb ff1 fs0 fc0 sc0 ls0 ws0">from sklearn.datasets import make_blobs</div><div class="t m0 x1 h2 yc ff1 fs0 fc0 sc0 ls0 ws0">from sklearn.feature_selection import <span class="_ _0"> </span>f_classif</div><div class="t m0 x1 h2 yd ff1 fs0 fc0 sc0 ls0 ws0">from sklearn import decomposition</div><div class="t m0 x1 h2 ye ff1 fs0 fc0 sc0 ls0 ws0">from sklearn.cluster import KMeans,AgglomerativeClustering</div><div class="t m0 x1 h2 yf ff1 fs0 fc0 sc0 ls0 ws0">from sklearn.metrics import silhouette_score,calinski_harabasz_score</div><div class="t m0 x1 h2 y10 ff1 fs0 fc0 sc0 ls0 ws0">import scipy.cluster.hierarchy as sch</div><div class="t m0 x1 h2 y11 ff1 fs0 fc0 sc0 ls0 ws0">from itertools import cycle</div><div class="t m0 x1 h2 y12 ff1 fs0 fc0 sc0 ls0 ws0">from matplotlib.patches import Ellipse</div><div class="t m0 x1 h2 y13 ff1 fs0 fc0 sc0 ls0 ws0">from sklearn.mixture import GaussianMixture</div><div class="t m0 x1 h2 y14 ff1 fs0 fc0 sc0 ls0 ws0">N=100</div><div class="t m0 x1 h2 y15 ff1 fs0 fc0 sc0 ls0 ws0">X1, <span class="_ _1"></span>y1 <span class="_ _1"></span>= <span class="_ _1"></span>make_blobs(n_samples=N, <span class="_ _1"></span>centers=4, <span class="_ _1"></span>n_features=2,random_state=0) <span class="_ _2"> </span>#2<span class="_ _3"> </span><span class="ff2">特征</span></div><div class="t m0 x1 h2 y16 ff1 fs0 fc0 sc0 ls0 ws0">X2, <span class="_ _1"></span>y2 <span class="_ _1"></span>= <span class="_ _4"></span>make_blobs(n_samples=N, <span class="_ _4"></span>centers=4, <span class="_ _1"></span>n_features=3,random_state=123) <span class="_ _5"> </span>#3<span class="_ _3"> </span><span class="ff2">特征</span></div><div class="t m0 x1 h2 y17 ff1 fs0 fc0 sc0 ls0 ws0">print('y1=',y1)</div><div class="t m0 x1 h2 y18 ff1 fs0 fc0 sc0 ls0 ws0">print('y2=',y2)</div><div class="t m0 x1 h3 y19 ff3 fs0 fc0 sc0 ls0 ws0">y1= <span class="_ _4"></span>[0 <span class="_ _6"></span>3 <span class="_ _6"></span>0 <span class="_ _4"></span>0 <span class="_ _6"></span>0 <span class="_ _4"></span>0 <span class="_ _6"></span>2 <span class="_ _4"></span>3 <span class="_ _6"></span>0 <span class="_ _4"></span>3 <span class="_ _6"></span>3 <span class="_ _4"></span>3 <span class="_ _6"></span>3 <span class="_ _4"></span>3 <span class="_ _6"></span>3 <span class="_ _4"></span>1 <span class="_ _6"></span>1 <span class="_ _4"></span>2 <span class="_ _6"></span>2 <span class="_ _4"></span>1 <span class="_ _6"></span>0 <span class="_ _4"></span>3 <span class="_ _6"></span>2 <span class="_ _4"></span>1 <span class="_ _6"></span>0 <span class="_ _4"></span>2 <span class="_ _6"></span>2 <span class="_ _4"></span>0 <span class="_ _6"></span>1 <span class="_ _4"></span>1 <span class="_ _6"></span>1 <span class="_ _4"></span>3 <span class="_ _6"></span>1 </div><div class="t m0 x1 h3 y1a ff3 fs0 fc0 sc0 ls0 ws0">1 <span class="_ _6"></span>2 <span class="_ _4"></span>0 <span class="_ _6"></span>3</div><div class="t m0 x1 h3 y1b ff3 fs0 fc0 sc0 ls0 ws0"> <span class="_ _6"></span>1 <span class="_ _4"></span>3 <span class="_ _6"></span>2 <span class="_ _4"></span>0 <span class="_ _6"></span>2 <span class="_ _4"></span>3 <span class="_ _6"></span>2 <span class="_ _4"></span>2 <span class="_ _6"></span>3 <span class="_ _4"></span>1 <span class="_ _6"></span>2 <span class="_ _4"></span>0 <span class="_ _6"></span>0 <span class="_ _4"></span>0 <span class="_ _6"></span>1 <span class="_ _4"></span>2 <span class="_ _6"></span>2 <span class="_ _4"></span>2 <span class="_ _6"></span>3 <span class="_ _4"></span>3 <span class="_ _6"></span>1 <span class="_ _4"></span>1 <span class="_ _6"></span>3 <span class="_ _4"></span>3 <span class="_ _6"></span>1 <span class="_ _4"></span>1 <span class="_ _6"></span>0 <span class="_ _4"></span>1 <span class="_ _6"></span>3 <span class="_ _4"></span>2 <span class="_ _6"></span>2 <span class="_ _4"></span>1 <span class="_ _6"></span>0 <span class="_ _4"></span>3 <span class="_ _6"></span>1 </div><div class="t m0 x1 h3 y1c ff3 fs0 fc0 sc0 ls0 ws0">0 <span class="_ _6"></span>3</div><div class="t m0 x1 h3 y1d ff3 fs0 fc0 sc0 ls0 ws0"> <span class="_ _6"></span>0 <span class="_ _4"></span>0 <span class="_ _6"></span>2 <span class="_ _4"></span>2 <span class="_ _6"></span>1 <span class="_ _4"></span>1 <span class="_ _6"></span>1 <span class="_ _4"></span>3 <span class="_ _6"></span>2 <span class="_ _4"></span>0 <span class="_ _6"></span>1 <span class="_ _4"></span>2 <span class="_ _6"></span>1 <span class="_ _4"></span>1 <span class="_ _6"></span>0 <span class="_ _4"></span>0 <span class="_ _6"></span>0 <span class="_ _4"></span>2 <span class="_ _6"></span>0 <span class="_ _4"></span>2 <span class="_ _6"></span>2 <span class="_ _4"></span>3 <span class="_ _6"></span>3 <span class="_ _4"></span>2 <span class="_ _6"></span>3 <span class="_ _4"></span>0]</div><div class="t m0 x1 h3 y1e ff3 fs0 fc0 sc0 ls0 ws0">y2= <span class="_ _6"></span>[2 <span class="_ _4"></span>0 <span class="_ _6"></span>1 <span class="_ _4"></span>3 <span class="_ _6"></span>2 <span class="_ _4"></span>2 <span class="_ _6"></span>1 <span class="_ _4"></span>0 <span class="_ _6"></span>2 <span class="_ _4"></span>1 <span class="_ _6"></span>0 <span class="_ _4"></span>1 <span class="_ _6"></span>1 <span class="_ _4"></span>0 <span class="_ _6"></span>1 <span class="_ _4"></span>3 <span class="_ _6"></span>0 <span class="_ _4"></span>0 <span class="_ _6"></span>3 <span class="_ _4"></span>1 <span class="_ _6"></span>0 <span class="_ _4"></span>3 <span class="_ _6"></span>1 <span class="_ _4"></span>0 <span class="_ _6"></span>3 <span class="_ _4"></span>1 <span class="_ _6"></span>1 <span class="_ _4"></span>0 <span class="_ _6"></span>2 <span class="_ _4"></span>2 <span class="_ _6"></span>0 <span class="_ _4"></span>3 <span class="_ _6"></span>3 </div><div class="t m0 x1 h3 y1f ff3 fs0 fc0 sc0 ls0 ws0">3 <span class="_ _6"></span>3 <span class="_ _4"></span>2 <span class="_ _6"></span>0</div><div class="t m0 x1 h3 y20 ff3 fs0 fc0 sc0 ls0 ws0"> <span class="_ _6"></span>0 <span class="_ _4"></span>3 <span class="_ _6"></span>1 <span class="_ _4"></span>2 <span class="_ _6"></span>0 <span class="_ _4"></span>3 <span class="_ _6"></span>0 <span class="_ _4"></span>2 <span class="_ _6"></span>2 <span class="_ _4"></span>2 <span class="_ _6"></span>2 <span class="_ _4"></span>0 <span class="_ _6"></span>2 <span class="_ _4"></span>1 <span class="_ _6"></span>0 <span class="_ _4"></span>1 <span class="_ _6"></span>3 <span class="_ _4"></span>0 <span class="_ _6"></span>1 <span class="_ _4"></span>2 <span class="_ _6"></span>3 <span class="_ _4"></span>0 <span class="_ _6"></span>1 <span class="_ _4"></span>1 <span class="_ _6"></span>2 <span class="_ _4"></span>2 <span class="_ _6"></span>3 <span class="_ _4"></span>2 <span class="_ _6"></span>3 <span class="_ _4"></span>3 <span class="_ _6"></span>3 <span class="_ _4"></span>1 <span class="_ _6"></span>1 <span class="_ _4"></span>0 <span class="_ _6"></span>3 </div><div class="t m0 x1 h3 y21 ff3 fs0 fc0 sc0 ls0 ws0">2 <span class="_ _6"></span>2</div><div class="t m0 x1 h3 y22 ff3 fs0 fc0 sc0 ls0 ws0"> <span class="_ _6"></span>0 <span class="_ _4"></span>1 <span class="_ _6"></span>2 <span class="_ _4"></span>3 <span class="_ _6"></span>2 <span class="_ _4"></span>3 <span class="_ _6"></span>1 <span class="_ _4"></span>1 <span class="_ _6"></span>0 <span class="_ _4"></span>2 <span class="_ _6"></span>0 <span class="_ _4"></span>2 <span class="_ _6"></span>3 <span class="_ _4"></span>3 <span class="_ _6"></span>0 <span class="_ _4"></span>1 <span class="_ _6"></span>1 <span class="_ _4"></span>1 <span class="_ _6"></span>3 <span class="_ _4"></span>3 <span class="_ _6"></span>2 <span class="_ _4"></span>0 <span class="_ _6"></span>1 <span class="_ _4"></span>2 <span class="_ _6"></span>3 <span class="_ _4"></span>0]</div><div class="t m0 x1 h2 y23 ff1 fs0 fc0 sc0 ls0 ws0">2.</div><div class="t m0 x1 h2 y24 ff1 fs0 fc0 sc0 ls0 ws0">plt.figure(figsize=(18,12))</div><div class="t m0 x1 h2 y25 ff1 fs0 fc0 sc0 ls0 ws0">plt.subplot(121)</div><div class="t m0 x1 h2 y26 ff1 fs0 fc0 sc0 ls0 ws0">plt.scatter(X1[:,0],X1[:,1],s=50)</div><div class="t m0 x1 h2 y27 ff1 fs0 fc0 sc0 ls0 ws0">plt.xlabel("X1-1")</div><div class="t m0 x1 h2 y28 ff1 fs0 fc0 sc0 ls0 ws0">plt.ylabel("X1-2")</div><div class="t m0 x1 h2 y29 ff1 fs0 fc0 sc0 ls0 ws0">plt.title("%d<span class="_ _3"> </span><span class="ff2">个样本观测点的分布</span>"%N)</div><div class="t m0 x1 h2 y2a ff1 fs0 fc0 sc0 ls0 ws0">ax=plt.subplot(122, projection='3d')</div><div class="t m0 x1 h2 y2b ff1 fs0 fc0 sc0 ls0 ws0">ax.scatter(X2[:,0],X2[:,1],X2[:,2],c='blue')</div><div class="t m0 x1 h2 y2c ff1 fs0 fc0 sc0 ls0 ws0">ax.set_xlabel("X2-1")</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div><div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="/image.php?url=https://csdnimg.cn/release/download_crawler_static/89507098/bg2.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">ax.set_ylabel("X2-2")</div><div class="t m0 x1 h2 y2 ff1 fs0 fc0 sc0 ls0 ws0">ax.set_zlabel("X2-3")</div><div class="t m0 x1 h2 y3 ff1 fs0 fc0 sc0 ls0 ws0">ax.set_title("%d<span class="_ _3"> </span><span class="ff2">个样本观测点的分布</span>"%N)</div><div class="t m0 x1 h4 y2d ff3 fs0 fc0 sc0 ls0 ws0">Text(0.5, <span class="_ _6"></span>0.92, <span class="_ _4"></span>'100<span class="_ _3"> </span><span class="ff4">个样本观测点的分布</span>')</div><div class="t m0 x1 h2 y18 ff1 fs0 fc0 sc0 ls0 ws0">3.</div><div class="t m0 x1 h2 y2e ff1 fs0 fc0 sc0 ls0 ws0">KM= KMeans(n_clusters=4, max_iter = 500) <span class="_ _0"> </span># <span class="_ _3"> </span><span class="ff2">建立二特征数据</span> <span class="_ _7"> </span>KMeans<span class="_ _3"> </span><span class="ff2">模型</span></div><div class="t m0 x1 h2 y2f ff1 fs0 fc0 sc0 ls0 ws0">KM.fit(X1) <span class="_ _8"> </span>#<span class="ff2">训练</span></div><div class="t m0 x1 h2 y30 ff1 fs0 fc0 sc0 ls0 ws0">labels=np.unique(KM.labels_) <span class="_ _9"> </span>#<span class="ff2">预测</span></div><div class="t m0 x1 h2 y31 ff1 fs0 fc0 sc0 ls0 ws0">print('labels=',labels)</div><div class="t m0 x1 h2 y32 ff1 fs0 fc0 sc0 ls0 ws0">#<span class="ff2">预测结果可视化</span></div><div class="t m0 x1 h2 y33 ff1 fs0 fc0 sc0 ls0 ws0">markers='o*^+' </div><div class="t m0 x1 h2 y34 ff1 fs0 fc0 sc0 ls0 ws0">for i,label in enumerate(labels): <span class="_ _a"> </span>#<span class="ff2">分别绘制每一个小类数据</span></div><div class="t m0 x1 h2 y35 ff1 fs0 fc0 sc0 ls0 ws0"> <span class="_ _5"> </span>plt.scatter(X1[KM.labels_==label,0],X1[KM.labels_==label,1],</div><div class="t m0 x1 h2 y36 ff1 fs0 fc0 sc0 ls0 ws0"> <span class="_ _b"> </span>label="cluster %d"%label,marker=markers[i],s=50)</div><div class="t m0 x1 h2 y37 ff1 fs0 fc0 sc0 ls0 ws0">plt.scatter(KM.cluster_centers_[:,0],KM.cluster_centers_[:,1],marker='X',</div><div class="t m0 x1 h2 y23 ff1 fs0 fc0 sc0 ls0 ws0"> <span class="_ _c"> </span>s=60,c='r',label="<span class="ff2">小类中心</span>") <span class="_ _d"> </span>#<span class="ff2">绘制小类中心</span></div><div class="t m0 x1 h2 y24 ff1 fs0 fc0 sc0 ls0 ws0">plt.legend(loc="best",framealpha=0.5)</div><div class="t m0 x1 h2 y25 ff1 fs0 fc0 sc0 ls0 ws0">plt.xlabel("X1-1")</div><div class="t m0 x1 h2 y26 ff1 fs0 fc0 sc0 ls0 ws0">plt.ylabel("X1-2")</div><div class="t m0 x1 h2 y27 ff1 fs0 fc0 sc0 ls0 ws0">plt.title("%d<span class="_ _3"> </span><span class="ff2">个样本观测点的聚类结果</span>"%N)</div><div class="t m0 x1 h5 y38 ff3 fs1 fc0 sc0 ls0 ws0">labels= <span class="_ _6"></span>[0 <span class="_ _6"></span>1 <span class="_ _6"></span>2 <span class="_ _6"></span>3]</div><div class="t m0 x2 h3 y39 ff3 fs0 fc1 sc0 ls0 ws0">Out[9]:</div><div class="t m0 x1 h6 y3a ff3 fs1 fc0 sc0 ls0 ws0">Text(0.5, <span class="_ _6"></span>1.0, <span class="_ _6"></span>'100<span class="_ _e"> </span><span class="ff4">个样本观测点的聚类结果</span>')</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div><div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="/image.php?url=https://csdnimg.cn/release/download_crawler_static/89507098/bg3.jpg"><div class="t m0 x1 h5 y3b ff3 fs1 fc0 sc0 ls0 ws0">4.</div><div class="t m0 x1 h6 y3c ff3 fs1 fc0 sc0 ls0 ws0">KM= <span class="_ _6"></span>KMeans(n_clusters=4, <span class="_ _6"></span>max_iter <span class="_ _6"></span>= <span class="_ _6"></span>500) <span class="_ _f"></span># <span class="_ _6"></span><span class="ff4">建立三特征数据<span class="ff3"> </span></span></div><div class="t m0 x1 h6 y3d ff3 fs1 fc0 sc0 ls0 ws0">KMeans<span class="_ _e"> </span><span class="ff4">模型</span></div><div class="t m0 x1 h6 y3e ff3 fs1 fc0 sc0 ls0 ws0">KM.fit(X2) <span class="_ _10"></span>#<span class="ff4">训练</span></div><div class="t m0 x1 h6 y3f ff3 fs1 fc0 sc0 ls0 ws0">labels=np.unique(KM.labels_) <span class="_ _11"></span>#<span class="ff4">预测</span></div><div class="t m0 x1 h6 y40 ff3 fs1 fc0 sc0 ls0 ws0">#(<span class="ff4">获得聚类标签,聚类解存储在<span class="_ _e"> </span></span>K-<span class="ff4">均值聚类对象的</span>.labels_<span class="ff4">属性中</span>)</div><div class="t m0 x1 h6 y41 ff3 fs1 fc0 sc0 ls0 ws0">#<span class="ff4">预测结果可视化</span></div><div class="t m0 x1 h6 y42 ff3 fs1 fc0 sc0 ls0 ws0">#(<span class="ff4">利用<span class="_ _e"> </span></span>for<span class="_ _e"> </span><span class="ff4">循环可视化聚类解,即以不同颜色和形状的符号分别绘制各小类的</span></div><div class="t m0 x1 h6 y43 ff4 fs1 fc0 sc0 ls0 ws0">散点图<span class="ff3">)</span></div><div class="t m0 x1 h5 y44 ff3 fs1 fc0 sc0 ls0 ws0">ax=plt.subplot(111, <span class="_ _6"></span>projection='3d')</div><div class="t m0 x1 h5 y45 ff3 fs1 fc0 sc0 ls0 ws0">markers='o*^+' </div><div class="t m0 x1 h6 y46 ff3 fs1 fc0 sc0 ls0 ws0">for <span class="_ _6"></span>i,label <span class="_ _6"></span>in <span class="_ _6"></span>enumerate(labels): <span class="_ _12"></span>#<span class="ff4">分别绘制每一个小类</span></div><div class="t m0 x1 h6 y47 ff4 fs1 fc0 sc0 ls0 ws0">数据</div><div class="t m0 x1 h5 y48 ff3 fs1 fc0 sc0 ls0 ws0"> <span class="_ _f"></span>ax.scatter(X2[KM.labels_==label,0],X2[KM.labels_==labe</div><div class="t m0 x1 h5 y49 ff3 fs1 fc0 sc0 ls0 ws0">l,1],X2[KM.labels_==label,2],</div><div class="t m0 x1 h5 y4a ff3 fs1 fc0 sc0 ls0 ws0">label="cluster <span class="_ _6"></span>%d"%label,marker=markers[i],s=50)</div><div class="t m0 x1 h5 y4b ff3 fs1 fc0 sc0 ls0 ws0">ax.scatter(KM.cluster_centers_[:,0],KM.cluster_centers_[:</div><div class="t m0 x1 h5 y4c ff3 fs1 fc0 sc0 ls0 ws0">,1],KM.cluster_centers_[:,2], <span class="_ _6"></span>marker='X',s=60,c='r',label</div><div class="t m0 x1 h6 y4d ff3 fs1 fc0 sc0 ls0 ws0">="<span class="ff4">小类中心</span>") <span class="_ _6"></span>#<span class="ff4">绘制小类中心</span></div><div class="t m0 x1 h6 y4e ff3 fs1 fc0 sc0 ls0 ws0"> <span class="_ _6"></span>#<span class="ff4">小类的类质心坐标存储在<span class="_ _e"> </span></span>K-<span class="ff4">均值对象的<span class="_ _e"> </span></span>cluster_centers_<span class="ff4">属性中</span></div><div class="t m0 x1 h5 y38 ff3 fs1 fc0 sc0 ls0 ws0">ax.legend(loc="best",framealpha=0.5)</div><div class="t m0 x1 h5 y4f ff3 fs1 fc0 sc0 ls0 ws0">ax.set_xlabel("X2-1")</div><div class="t m0 x1 h5 y50 ff3 fs1 fc0 sc0 ls0 ws0">ax.set_ylabel("X2-2")</div><div class="t m0 x1 h5 y51 ff3 fs1 fc0 sc0 ls0 ws0">ax.set_zlabel("X2-3")</div><div class="t m0 x1 h6 y52 ff3 fs1 fc0 sc0 ls0 ws0">ax.set_title("%d<span class="_ _e"> </span><span class="ff4">个样本观测点的聚类结果</span>"%N)</div></div><div class="pi" data-data='{"ctm":[1.611830,0.000000,0.000000,1.611830,0.000000,0.000000]}'></div></div>