K-Means算法过程及代码实现,并对结果使用ARI进行评估

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014727529/article/details/78433725
'''K-means算法过程及代码实现
1.首先,随机布置K个特征空间内的点作为初始的聚类中心
2.然后,对于根据每个数据的特征向量,从K个聚类中心中寻找距离最近的一个,并且把该数据标记为从属这个聚类中心
3.接着,在所有的数据都被标记过聚类中心之后,根据这些数据新分配的类簇,重新对K个聚类中心做计算
4.如果一轮下来,所有的数据点从属的聚类中心与上一次的分配的类簇没有变化,那么可以迭代停止,否者回到第2步继续循环
'''
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score


#使用pandas读取网页中的测试数据和训练数据
digits_train = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tra',header=None)
digits_test = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/optdigits/optdigits.tes',header=None)
#从训练数据与测试数据集上都分离出64维度的像素特征与1维度的数字目标
X_train =digits_train[np.arange(64)]
y_train = digits_train[64]


X_test = digits_test[np.arange(64)]
y_test = digits_test[64]
#从sklearn导入KMeans,初始化模型,并设置聚类中心数量为10
kmeans = KMeans(n_clusters=10)
kmeans.fit(X_train)
#祖提傲判断每个测试图像的聚类中心
y_pred = kmeans.predict(X_test)
#使用ARI进行K-means聚类性能评估(每个数据都有所属的类别)
print(adjusted_rand_score(y_test,y_pred))

猜你喜欢

转载自blog.csdn.net/u014727529/article/details/78433725