无监督学习——k-means_手写字体识别(调用api)

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的结果,则表明聚类结果有重叠的情况
'''

 

你可能感兴趣的:(机器学习)