码迷,mamicode.com
首页 > 编程语言 > 详细

机器学习——03K均值算法

时间:2020-04-16 00:17:54      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:初始   源代码   range   fit   cmap   机器学习   算法   技术   简洁   

1). 扑克牌手动演练k均值聚类过程:>30张牌,3类

技术图片

 

                                                图1 统计表格

技术图片

 

                                     图2 第一轮实际情况

技术图片

 

                               图3 第二轮实际情况

2). *自主编写K-means算法 ,以鸢尾花花瓣长度数据做聚类,并用散点图显示。(加分题)

ps:之前人工智能老师教过这个算法,所以代码基本一样。

源代码:   

# 导入数据集
from sklearn.datasets import load_iris
import numpy as np

data = load_iris().data
n = len(data)  # 计算样本总数
m = data.shape[1]  # 样本属性个数
k = 3      #选取类中心个数
dist = np.zeros([n, k + 1])   #初始化距离矩阵,最后一列存放每个样本的类别

center = data[:k, :]
center_new = np.zeros([k, m])
while True:

    for i in range(n):
        for j in range(k):
            dist[i, j] = np.sqrt(sum((data[i, :] - center[j, :]) ** 2))

        dist[i, k] = np.argmin(dist[i, :k])

    for i in range(k):
        index = dist[:, k] == i  #
        center_new[i, :] = data[index, :].mean(axis=0)

    if np.all((center == center_new)):
        break
    else:
        center = center_new
print("150个样本的归类\n", dist[:, k])

 技术图片

                                          图4 聚类结果

3). 用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类,并用散点图显示.

源代码:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

iris=load_iris()
data=iris.data[:,1]
x=data.reshape(-1,1)   #扁平化

y=KMeans(n_clusters=3)   # 引入构建KMeans模型,质心数为3
y.fit(x)  #训练模型,计算k均值聚类

y_pre=y.predict(x)  #根据训练的模型来预测,即计算聚类中心并预测每个样本的聚类索引

plt.scatter(x[:,0],x[:,0],c=y_pre,s=50,cmap=‘rainbow‘)
plt.show()

 技术图片

 

 

 

                                                              图 5  代码及散点图

4). 鸢尾花完整数据做聚类并用散点图显示.

源代码:

from sklearn.datasets import load_iris
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

iris=load_iris()
x=iris.data
y=KMeans(n_clusters=3) # 引入构建KMeans模型,质心数为3
y.fit(x) #训练模型,计算k均值聚类
y_pre=y.predict(x) #根据训练的模型来预测,即计算聚类中心并预测每个样本的聚类索引
print("预测结果:\n", y_pre)
plt.scatter(x[:,2],x[:,3],c=y_pre,s=100,cmap=‘rainbow‘,alpha=0.5)
plt.show()

  技术图片

                                          图6 预测的结果及其散点图

5).想想k均值算法中以用来做什么?

答:k均值聚类是最著名的划分聚类算法,由于简洁和效率使得他成为所有聚类算法中最广泛使用的。给定一个数据点集合和需要的聚类数目k,k由用户指定,k均值算法根据某个距离函数反复把数据分入k个聚类中。生活中可以用来分类,根据某个特征对事物进行分类,例如根据往年数据分析中国足球队属于几流水平,根据往年的种子质量来预测今年的种子质量,数据分类等。

机器学习——03K均值算法

标签:初始   源代码   range   fit   cmap   机器学习   算法   技术   简洁   

原文地址:https://www.cnblogs.com/lcj170/p/12709350.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!