import numpy as np
import matplotlib as plt
import pandas as pd
#使用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]
#训练模型
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=10) #设置聚类中心数为10
kmeans.fit(X_train, y_train)
y_predict = kmeans.predict(X_test) #逐条判断每个测试图像所属的聚类中心
#性能分析
from sklearn import metrics
print(metrics.adjusted_rand_score(y_test,y_predict))
输出:
性能测评:已经学习过分类、回归的性能评测标准,聚类的性能指标我们用两种方法来评测,本文讲解第一种Adjusted Rand Index(ARI)。如果被用来评估的数据本身带有正确的类别信息的话,通常使用ARI。ARI指标与分类问题中计算准确性的方法类似,同时也兼顾到了类簇无法和分类标记一一对应的问题。