scikit-learn/k-means算法简单应用

来源:互联网 发布:淘宝 未上架 抢购技巧 编辑:程序博客网 时间:2024/05/17 02:56

环境:scikit-learn0.18,python3

机器学习中,K-Means算法是一种clustering的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的算法
主要思想:在一堆数据中随机的选取K个中心点,计算所有点到这k个中心点的距离,根据距离将所有点分为k类,再在k类中重新计算中心点,重新计算距离,直到收敛
这里写图片描述

以机器学习案例中用k-means方法对iris数据集进行聚类

#coding:utf-8"""python 3sklearn 0.18"""from sklearn.model_selection import GridSearchCVfrom sklearn.model_selection import train_test_splitfrom sklearn.cluster import KMeansfrom sklearn.metrics import accuracy_score,confusion_matrix,classification_reportfrom sklearn.datasets import load_irisimport input_dataimport numpy as npimport pickleiris = load_iris()x = iris.datay = iris.target#mnist = input_data.read_data_sets('mnist/',one_hot=False)#x = mnist.train.images#y = mnist.train.labels#训练一个Kmeans分类器clf = KMeans(n_clusters=3)clf.fit(x)predictions = clf.predict(x)"""predictions = []for i in range(1000):    if i % 100 ==0:        print('= = = = = = > > > > > >','epoch:',int(i/100))    output = clf.predict([mnist.test.images[i]])    predictions.append(output)"""print(confusion_matrix(y,predictions))print(classification_report(y,np.array(predictions)))print('test accuracy is:',accuracy_score(y,predictions))

结果:

由于初始时刻的中心点是随机选取的,这就造成分类结果有很大差别。这也是k-means算法缺点之一,有待后续研究分析
这里写图片描述

这里写图片描述

原创粉丝点击