机器学习(九)
无监督K-Means聚类
1. K-Means聚类算法流程
![在这里插入图片描述](https://img-blog.csdnimg.cn/e9e129f017c740669f6785c52f18cd47.png#pic_center)
误差平方和准则函数:
![在这里插入图片描述](https://img-blog.csdnimg.cn/69efd1f5c8c549aabf485be5496e30b8.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c6bifMDjlk6U=,size_20,color_FFFFFF,t_70,g_se,x_16)
2. K-Means实现鸢尾花聚类
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import datasets
import sklearn.metrics as sm
Iris = datasets.load_iris()
Iris.feature_names
Iris.target
Iris.target_names
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')
# plt.show()
model = KMeans(n_clusters=3)
model.fit(x)
predY = np.choose(model.labels_,[2,0,1]).astype(np.int64)
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-Means Classification')
plt.show()
print(sm.accuracy_score(y,predY))
![在这里插入图片描述](https://img-blog.csdnimg.cn/2f2c04e7f14c4fd3a74aac294a6a3f5e.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA6I-c6bifMDjlk6U=,size_20,color_FFFFFF,t_70,g_se,x_16)