系统聚类分析

```
import pandasas pd
from sklearnimport preprocessing
import scipy.cluster.hierarchyas sch
#用于进行层次聚类,画层次聚类图的工具包
from matplotlibimport pyplotas plt
from sklearn.clusterimport KMeans
from prettytableimport PrettyTable
##数据准备
df = pd.read_excel("习题5.8.xlsx")
label =df['地区']
array = df.values[:,1:7]
##数据预处理
def ZscoreNormalization(X):
scaler = preprocessing.StandardScaler().fit(X)
x_norm = scaler.transform(X)
return x_norm
##系统聚类
X_norm =ZscoreNormalization(array)
Z = sch.linkage(X_norm,method='ward', metric='euclidean')
sch.dendrogram(Z)
#绘图1
plt.title('Clustering')
plt.xlabel('area')
plt.ylabel('distance')
plt.show()
```

```
##K—mean 聚类
cluster =4
cls =KMeans(cluster).fit(X_norm)
# print(cls.labels_) #输出分类列表
cls_result,results =[],[]
for iin cls.labels_:
cls_result.append(i)
results =list(zip(label,cls_result))
Results= PrettyTable(["地区", "K-mean分类"])
for iin results:
Results.add_row([i[0],i[1]])
print(Results)
```
+--------+------------+
| 地区 | K-mean分类 |
+--------+------------+
| 北京 | 3 |
| 天津 | 0 |
| 河北 | 1 |
| 山西 | 1 |
| 内蒙古 | 1 |
| 辽宁 | 0 |
| 吉林 | 2 |
| 黑龙江 | 2 |
| 上海 | 3 |
| 江苏 | 0 |
| 浙江 | 0 |
| 安徽 | 2 |
| 福建 | 2 |
| 江西 | 2 |
| 山东 | 0 |
| 河南 | 1 |
+--------+------------+
网友评论