1. 首页
  2. 自学中心
  3. 软件
  4. Python

一个简单的 KMeans python实例

Packages

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

from sklearn import datasets
from sklearn.cluster import KMeans
import sklearn.metrics as sm

%matplotlib inline

引入数据集

iris = datasets.load_iris()
一个简单的 KMeans python实例

Feature数据

iris.feature_names
一个简单的 KMeans python实例

实际的分类,用来计算accuracy

iris.target
iris.target_names
一个简单的 KMeans python实例

把数据转换成 dataframe

x = pd.DataFrame(iris.data)
x.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width']

y = pd.DataFrame(iris.target)
y.columns = ['Targets']

可视化看一下数据的分类是怎样的

plt.figure(figsize=(14,7))

colormap = np.array(['red', 'lime', 'black'])

plt.subplot(1, 2, 1)
plt.scatter(x.sepal_length, x.sepal_width, c=colormap[y.Targets], s=40)
plt.title('sepal')

plt.subplot(1, 2, 2)
plt.scatter(x.petal_length, x.petal_width, c=colormap[y.Targets], s=40)
plt.title('petal')
一个简单的 KMeans python实例

应用KMeans模型

model = KMeans(n_clusters=3)
model.fit(x)

看结果

model.labels_
一个简单的 KMeans python实例

可视化结果
左图是实际值,右图是模型输出 model.labels_ 标注的

plt.figure(figsize=(14, 7))

colormap = np.array(['red', 'lime', 'black'])

plt.subplot(1, 2, 1)
plt.scatter(x.petal_length, x.petal_width, c=colormap[y.Targets], s=40)
plt.title('Real Classification')

plt.subplot(1, 2, 2)
plt.scatter(x.petal_length, x.petal_width, c=colormap[model.labels_], s=40)
plt.title('K Mean Classification')
一个简单的 KMeans python实例

为了类别颜色一致,需要调换
[2, 0, 1]根据不同的运行而不同,根据自己情况,左右对比去调换

predY = np.choose(model.labels_, [2, 0, 1]).astype(np.int64)
一个简单的 KMeans python实例

现在再看对比图

plt.figure(figsize=(14, 7))

colormap = np.array(['red', 'lime', 'black'])

plt.subplot(1, 2, 1)
plt.scatter(x.petal_length, x.petal_width, c=colormap[y.Targets], s=40)
plt.title('Real Classification')

plt.subplot(1, 2, 2)
plt.scatter(x.petal_length, x.petal_width, c=colormap[predY], s=40)
plt.title('K Mean Classification')
一个简单的 KMeans python实例

计算accuracy

sm.accuracy_score(y, predY)

0.89

看一下 confusion 矩阵

sm.confusion_matrix(y, predY)
一个简单的 KMeans python实例

这个矩阵是可以看出来,某一个实际的类被分辨成其他类的个数。

一个简单的 KMeans python实例

以上就是一个很清爽的例子。

 

文/不会停的蜗牛(简书作者)
原文链接:http://www.jianshu.com/p/66e928c815f2
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

原创文章,作者:xsmile,如若转载,请注明出处:http://www.17bigdata.com/%e4%b8%80%e4%b8%aa%e7%ae%80%e5%8d%95%e7%9a%84-kmeans-python%e5%ae%9e%e4%be%8b/

联系我们

在线咨询:点击这里给我发消息

邮件:23683716@qq.com

跳至工具栏