sklearn是机器学习领域中最知名的python模块之一。sklearn的官网链接http://scikit-learn.org/stable/index.html#
kmeans算法概述:
k-means算法概述
MATLAB kmeans算法:
MATLAB工具箱k-means算法
下面利用python中sklearn模块进行数据的聚类
数据集自制数据集
维度为3。
需要用到的python库:
- xlrd:读取Excel中的数据
- pandas:数据处理
- numpy:数组
- sklearn:聚类
代码
代码语言:javascript复制import xlrd
import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
# 从Excel中读取数据存入数组
rawData = xlrd.open_workbook('kmeansdata.xlsx')
table = rawData.sheets()[0]
data = []
for i in range(table.nrows):
if i == 0:
continue
else:
data.append(table.row_values(i)[1:])
featureList = ['Age', 'Gender', 'Degree']
mdl = pd.DataFrame.from_records(data, columns=featureList)
# 聚类
mdl_new = np.array(mdl[['Age', 'Gender', 'Degree']]) # 转化为数组
seed = 9 # 设置随机数
clf = KMeans(n_clusters=3, random_state=seed) # 聚类
clf.fit(mdl_new) # 拟合模型
#print(clf.cluster_centers_) # 查看KMeans聚类后的5个质心点的值。
mdl['label'] = clf.labels_ # 对原数据表进行类别标记
c = mdl['label'].value_counts()
print(mdl.values)
结果:
[[ 5. 1. 0. 0.] [ 48. 1. 3. 2.] [ 20. 0. 3. 0.] [ 69. 1. 4. 1.] [ 88. 1. 2. 1.] [ 14. 0. 2. 0.] [ 32. 0. 4. 2.] [ 39. 0. 4. 2.] [ 50. 1. 1. 2.] [ 9. 0. 0. 0.]]
一共聚类成3类,最后一列是类别数(0,1,2)