[问题背景]
假定有这样的数据集,txt格式,ANSI编码:
YZN,133,108,76
ZHY,96,145,101
WYZ,132,107,60
DHY,100,102,120
CYH,139,99,93
LHY,73,149,81
ZHY,85,148,93
TQP,39,138,85
ZZL,145,112,71
HJC,101,116,118
XZY,99,98,117
每行第一列是学生姓名,第二列是语文成绩,第三列是数学成绩,第四列是英语成绩。
目标是利用KMeans对学生进行聚类,例如聚成3类。
[问题分析]
数据处理loadData()函数的设计在[Python数据处理] 怎样用Python预处理txt文档提取数据中已经讲过。
应用DBSCAN聚类器:
数据预处理grade.txt(需要和该py代码处于同一目录下)
if __name__ == '__main__':
Name, Data = loadData('grade.txt')
设置DBSCAN聚类器所需要的参数eps(邻域半径)和min_samples(最小样本数)
eps = 21
min_samples = 2
DBSCAN聚类的原理请参见我在B站的投稿视频:DBSCAN聚类 动画演示
用DBSCAN方法设置一个eps=21,min_samples=2的聚类器db,