美文网首页
机器学习实战Py3.x填坑记10—利用K-均值聚类算法对未标注数

机器学习实战Py3.x填坑记10—利用K-均值聚类算法对未标注数

作者: 瘦长的丰一禾 | 来源:发表于2017-02-06 18:22 被阅读776次

    本章内容:
    K-均值聚类算法
    对聚类得到的簇进行后处理
    二分K-均值聚类算法
    对地理位置进行聚类

    在运行程序清单10-1的时候出现问题:

    在运行完命令:datMat = mat(kMeans.loadDataSet('testSet.txt'))之后,查看了下datMat发现datMat都是类似于
    <map object at 0x0000011F0FF1F400>的东西。
    原因是fltLine = map(float, curLine)问题
    于是对函数loadDataSet()进行更改,更改之后的函数如下:
    def loadDataSet(fileName):
        dataMat = []
        fr = open(fileName)
        for line in fr.readlines():
            temp = [] #这一行为我自己加的
            curLine = line.strip().split('\t'),
            #fltLine = map(float, curLine) #书上代码
            temp.append(float(curLine[0])) 
            temp.append(float(curLine[1]))
            dataMat.append(temp)
        return dataMat 
    

    在10.1节K-均值聚类算法中运行完程序清单10-2可以用matpoltlib来绘制图10-1。绘图代码在《机器学习实战》这本书书上未给出,绘图代码如下:

    用来显示图10-1的代码        
    def showCluster(dataSet, k, centroids, clusterAssment):
        m, dim = shape(dataSet)
        if dim != 2:
            print ("Sorry! i can not draw because the dimension of data is not 2!")
            return 1
        
        mark = ['or','ob','og','ok','^r','+r','sr','dr','<r','pr']  
        if k > len(mark):
            print ("Sorry! Your k is too large!")
            return 1
        #draw all samples
        for i in range(m):
            markIndex = int(clusterAssment[i,0]) #为样本指定颜色
            plt.plot(dataSet[i,0], dataSet[i,1], mark[markIndex])
                
        mark = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb']
        #draw the centroids
        for i in range(k):
            plt.plot(centroids[i,0], centroids[i,1], mark[i],marker= '+',color = 'red',markersize=18)
            #用marker来指定质心样式,用color和markersize来指定颜色和大小
                
        plt.show()
    

    如下图,显示如本书P188页图10-1,K-均值聚类的结果示意图。


    P188页 图10-1

    运行程序清单10-3 二分K-均值聚类算法之后调用showCluster()函数可以产生如书上P193页10-3图:


    P193页 图10-3

    参考链接:
    《机器学习实战》之K-均值聚类算法的python实现
    《机器学习实战》之二分K-均值聚类算法的python实现
    机器学习算法与Python实践之(五)k均值聚类(k-means)
    《机器学习实战》kMeans算法(K均值聚类算法)
    《机器学习实战》笔记之十——利用K均值聚类算法对未标注数据分组
    利用K-均值聚类算法对未标注数据分组

    相关文章

      网友评论

          本文标题:机器学习实战Py3.x填坑记10—利用K-均值聚类算法对未标注数

          本文链接:https://www.haomeiwen.com/subject/sbmyittx.html