K均值算法

栏目: IT技术 · 发布时间: 4年前

内容简介:K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先

一、概念

K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先 随机选定初始点 为质心,并通过 计算 每一个样本与质心之间的 相似度 (这里为欧式距离),将样本点归到最相似的类中,接着,重新 计算每个类的质心 (即为类中心),重复这样的过程,直到质心 不再改变 ,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,K-Means算法的收敛速度比较慢。

二、特点:

常用距离

a.欧式距离

b.曼哈顿距离

三、算法流程

K-means是一个反复迭代的过程,算法分为四个步骤:

(x,k,y)

(1) 选取数据空间中的K个对象作为初始中心,每个对象代表一个聚类中心;

def initcenter(x, k): kc

(2) 对于样本中的数据对象,根据它们与这些聚类中心的欧氏距离,按距离最近的准则将它们分到距离它们最近的聚类中心(最相似)所对应的类;

def nearest(kc, x[i]): j

def xclassify(x, y, kc):y[i]=j

(3) 更新聚类中心:将每个类别中所有对象所对应的均值作为该类别的聚类中心,计算目标函数的值;

def kcmean(x, y, kc, k):

(4) 判断聚类中心和目标函数的值是否发生改变,若不变,则输出结果,若改变,则返回2)。

while flag:

y = xclassify(x, y, kc)

kc, flag = kcmean(x, y, kc, k)

四、实践

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

①本次模拟k均值用到的扑克牌,初始中心为(2,9,12)

K均值算法

②经过一轮计算(选出中心:3,8,12)

K均值算法

③一直算到最后

K均值算法

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

### 1、导入鸢尾花数据
from sklearn.datasets import load_iris
import numpy as np

### 2、鸢尾花数据
iris = load_iris()
data=iris['data']

#样本属性个数
m=data.shape[1]
#样本个数
n=len(data)
#类中心个数,即最终分类
k=3

### 3、数据初始化
#距离矩阵
dist=np.zeros([n,k+1])
#初始类中心
center=np.zeros([k,m])
#新的类中心
new_center=np.zeros([k,m])
### 4、选中心
#选择前三个样本作为初始类中心
center=data[:k, :]

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
        new_center[i,:]=np.mean(data[index, :])
    #判断结束
    if(np.all(center==new_center)):
        break
    else:
        center=new_center
print('聚类结果:',dist[:,k])

K均值算法

(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)
# 构建模型
model = KMeans(n_clusters=3)
# 训练
model.fit(x)
# 预测样本的聚类索引
y = model.predict(x)
print("预测结果:", y)
#画图
plt.scatter(x[:, 0], x[:, 0], c=y, s=50, cmap='rainbow')
plt.show()

预测结果:

K均值算法

散点图可视化:

K均值算法

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

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

# 导入鸢尾花数据集
iris = load_iris()
# 鸢尾花花瓣长度数据
x = iris.data
# 构建模型
model = KMeans(n_clusters=3)
# 训练
model.fit(x)
# 预测
y = model.predict(x)
print("预测结果:", y)
#画图
plt.scatter(x[:, 2], x[:, 3], c=y, s=50, cmap='rainbow')
plt.show()

预测结果:

K均值算法

散点图可视化:

K均值算法

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

  • 文本分析和归类
  • K均值算法实现图像压缩
  • 像素处理
  • K均值算法处理图像

以上所述就是小编给大家介绍的《K均值算法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

绝对价值

绝对价值

[美] 伊塔马尔·西蒙森 艾曼纽·罗森 / 钱峰 / 中国友谊出版公司 / 2014-7 / 45.00元

绝对价值指的是经用户体验的产品质量,即使用某件产品或者享受某项服务的切实感受。 过去,消费就像是押宝。一件商品好不好,一家餐馆的环境如何,没有亲身体验过消费者无从得知,只能根据营销人员提供的有限信息去猜测。品牌、原产地、价位、广告,这些重要的质量线索左右着消费者的选择。 然而,互联网和新兴科技以一种前所未有的速度改变了商业环境。当消费者可以在购买前查看到交易记录和消费者评价,通过便捷的......一起来看看 《绝对价值》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

html转js在线工具
html转js在线工具

html转js在线工具