from numpy import *
import pandas as pd
from sklearn.cross_validation import train_test_split
import numpy as np
#读取数据集
digits_train=pd.read_csv('dataset/optdigits.tra',header=None)
digits_test=pd.read_csv('dataset/optdigits.tes',header=None)
len(digits_train)
#切分训练集 特征 标签
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 的k_means算法
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=10)
kmeans.fit(x_train)
y_predict=kmeans.predict(x_test)
#kmeans模型中的属性
print('10个簇的中心点:',kmeans.cluster_centers_)
print('类别标签:',kmeans.labels_)
#轮廓系数
print(kmeans.labels_)
from sklearn.metrics import silhouette_score
scores=silhouette_score(x_train,kmeans.labels_ ,metric='euclidean')#所有样本系数的平均值
print('所有样本的轮廓系数平均值',scores)
'''
轮廓系数取值为【-1,1】,其值越大越好,且当值为负时,表明ai>bi,样本被分配到错误的簇中,
聚类结果不可接受,对于接近0的结果,则表明聚类结果有重叠的情况
'''