机器学习_聚类分析_K-mens

机器学习_聚类分析_K-mens


K-means聚类的方法也叫K均值聚类,聚类的方法有许多中,其中K-mens可能是最常用到的方法。
  1. 算法的优缺点
  2. 算法的核心思想
  3. 算法的实现

1 算法的优缺点

优点缺点
使用简单因为它使用了一个随机的元素,所以它不能保证找到最佳的类
需要一个合理初始化要聚类的个数:即要初始化K
..对极值敏感

2.算法的核心思想

物以类聚、人以群分。

K-means算法的核心思想主要是:假设数据的记录是N,该算法首先任意选择K个聚类中心点,那么其它的(N-K)个记录中每一条记录,计算出到初始化的K个记录的距离(其它距离函数也可以)并比较其大小,选择最小的距离。
然后,剩余的(N-K)条记录,都能找到自己的“家”,形成了初步的K类。
进一步,对上一步聚成K类的数据,计算其每一类的均值,形成新的K个中心点
循环,所有的N个记录从新开始找“家”,按照距离最近的方法,
结束,当K个中心点变化不大,或者每次每家的成员固定不变时候,算法结束。

R语言基础包使用:Kmeas()这个函数,函数的参数形式如下:
kmeans(x, centers, iter.max = 10, nstart = 1,
       algorithm = c("Hartigan-Wong", "Lloyd", "Forgy",
                     "MacQueen"), trace=FALSE)
一鸢尾花为例:
    data("iris") #加载数据
    table(iris$Species) #确定聚类中的个数,
    ![这里写图片描述](http://img.blog.csdn.net/20171018210331414?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvTWFyb18xM3Ro/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
    df1 <- subset(iris,select=-Species) #聚类矩阵
    df <- kmeans(df1,3) #算法开始,其他参数采用默认值
            table(df$cluster) #查看聚类结果
基本上就是这个流程了

“”“

come from sklearn

“””
import numpy as np
from sklearn import datasets
iris = datasets.load_iris()
iris_X = iris.data
iris_Y = iris.target

Split iris data in train and test data

indices = np.random.permutation(len(iris_X))
iris_X_train = iris_X[indices[:-10]]
iris_Y_trian = iris_Y[indices[:-10]]
iris_X_test = iris_X[indices[-10:]]
iris_Y_test = iris_Y[indices[-10:]]

load knn alogrithm

from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import confusion_matrix
knn = KNeighborsClassifier()
knn.fit(iris_X,iris_Y)
out_put = knn.predict(iris_X_test)
cm = confusion_matrix(iris_Y_test,out_put)
print (cm)
“`

参考文献:
[1] http://home.deib.polimi.it/matteucc/Clustering/tutorial_html/kmeans.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值