-
Notifications
You must be signed in to change notification settings - Fork 66
/
Copy pathsk-k均值聚类.py
58 lines (45 loc) · 2.07 KB
/
sk-k均值聚类.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
from sklearn.cluster import Birch # 从sklearn.cluster机器学习聚类包中导入Birch聚类
from sklearn.cluster import KMeans # 从sklearn.cluster机器学习聚类包中导入KMeans聚类
"""
第1部分:数据集
X表示二维矩阵数据,篮球运动员比赛数据
总共20行,每行两列数据
第一列表示球员每分钟助攻数:x1
第二列表示球员每分钟得分数:x2
"""
X = [[0.0888, 0.5885],[0.1399, 0.8291],[0.0747, 0.4974],[0.0983, 0.5772],[0.1276, 0.5703],
[0.1671, 0.5835],[0.1906, 0.5276],[0.1061, 0.5523],[0.2446, 0.4007],[0.1670, 0.4770],
[0.2485, 0.4313],[0.1227, 0.4909],[0.1240, 0.5668],[0.1461, 0.5113],[0.2315, 0.3788],
[0.0494, 0.5590],[0.1107, 0.4799],[0.2521, 0.2735],[0.1007, 0.6318],[0.1067, 0.4326],
[0.1456, 0.8280]
]
"""
第2部分:KMeans聚类
clf = KMeans(n_clusters=3) 表示类簇数为3,聚成3类数据,clf即赋值为KMeans
y_pred = clf.fit_predict(X) 载入数据集X,并且将聚类的结果赋值给y_pred
"""
clf = KMeans(n_clusters=3) # 聚类算法,参数n_clusters=3,聚成3类
y_pred = clf.fit_predict(X) # 直接对数据进行聚类,聚类不需要进行预测
# 输出完整Kmeans函数,包括很多省略参数
print('k均值模型:\n',clf)
# 输出聚类预测结果,20行数据,每个y_pred对应X一行或一个球员,聚成3类,类标为0、1、2
print('聚类结果:\n',y_pred)
"""
第3部分:可视化绘图
Python导入Matplotlib包,专门用于绘图
import matplotlib.pyplot as plt 此处as相当于重命名,plt用于显示图像
"""
import numpy as np
import matplotlib.pyplot as plt
# 获取第一列和第二列数据 使用for循环获取 n[0]表示X第一列
x1 = [n[0] for n in X]
x2 = [n[1] for n in X]
# 绘制散点图 参数:x横轴 y纵轴 c=y_pred聚类预测结果 marker类型 o表示圆点 *表示星型 x表示点
plt.scatter(x1, x2, c=y_pred, marker='x')
# 绘制标题
plt.title("Kmeans-Basketball Data")
# 绘制x轴和y轴坐标
plt.xlabel("x1")
plt.ylabel("x2")
# 显示图形
plt.show()