分类与聚类
分类:分类其实是从特定的数据中挖掘模式,做出判断的过程。
分类学习的主要过程:
1)训练数据集存在一个类标记号,判断它是正向数据集还是负向数据集;
2)然后需要对数据集进行学习训练,并构建一个训练的模型;
3)通过该模型对预测数据集进行预测,并计算其结果的性能
聚类:将数据集中在某些方面相似的数据成员放在一起,这些数据是没有标签的,是无监督学习。
聚类的目的也是把数据分类,但是事先不知道如何去分的,完全是算法自己来判断各条数据之间的相似性,相似的就放在一起。
聚类算法分为三类:原型聚类、层次聚类、密度聚类
K-Means聚类
K-Means聚类是属于原型聚类类型的,是较常用的聚类算法,其目标是将数据点划分为K个类簇,该算法的最大优点是简单、便于理解、运算速度较快,缺点是在聚类前指定聚集的类簇数。
算法流程:
K-Means算法应用代码举例:
from sklearn.cluster import KMeans
'''
第一部分数据集
X表示二维矩阵数据,篮球运动员比赛数据
总共20行,每行两列数据
第一列表示球员每分钟助攻数
第二列表示球员每分钟得分数
'''
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.1306,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.1121,0.5735],
[0.1007,0.6318],
[0.1956,0.4280],
]
#输出数据集
print(X)
'''
第二部分:K-Means聚类
clf = KMeans(n_clusters=3)表示类簇数为3,聚类成三类数据
y_pred = clf.fit_predict(X)载入数据集X,并且将聚类的结果赋值给y_pred
'''
clf = KMeans(n_clusters=3) #输出完整的KMeans函数
y_pred = clf.fit_predict(X) #输出聚类预测结果
print(clf)
print("y_pred = ",y_pred)
'''
第三部分:可视化绘图
'''
import numpy as np
import matplotlib.pyplot as plt
x = [n[0] for n in X]
print(x)
y = [n[1] for n in X]
print(y)
'''
绘制散点图
参数:x横轴 y纵轴 c=y_pred聚类预测结果 marker类型 o表圆点 *表示星型 x表示点
'''
plt.scatter(x,y,c=y_pred,marker='x')
plt.title("Kmeans-Basketball Data") #绘制标题
#绘制x轴和y轴坐标
plt.xlabel("assists_per_minute")
plt.ylabel("points_per_minute")
#设置右上角图例
plt.legend(["A","B","C"])
#显示图形
plt.show()
结果: