龙空技术网

python非监督机器学习入门:K均值聚类实例操练

Codewar 102

前言:

如今兄弟们对“k均值聚类r语言”大概比较着重,各位老铁们都需要分析一些“k均值聚类r语言”的相关资讯。那么小编同时在网摘上汇集了一些关于“k均值聚类r语言””的相关知识,希望大家能喜欢,兄弟们快快来学习一下吧!

首先,自己学习的过程中总是会觉得有例子演示才能加深理解,所以我的文章总少不了例子,编都要编出来例子帮助大家理解,今天给大家写写非监督机器学习和一个k均值聚类的实战。

非监督机器学习

非监督的机器学习没有提前标记结果,全靠算法自动判断相似性

非监督学习中输入数据没有被标记,也没有确定的结果,在这种学习中需要机器根据样本间的相似性对样本集进行分类,使相同类别中变异最小化而类别间的变异最大化。

常见的非监督学习聚类:聚类就是试图把全体数据实例划分成一些相似的簇。簇中的数据实例彼此相近,不同簇的实例彼此不同。关联分析:关联分析指从大规模的数据集中,寻找不同特征或者物品之间的隐含关系,以后找机会写写。

聚类和关联分析都有很多算法,有兴趣的同学可以关注我,以后我学到了给大家慢慢解释,今天主要来看一个比较简单的聚类算法---k均值聚类。

经典K-means算法流程:

1. 随机地选择k个对象,每个对象初始地代表了一个簇的中心;

2. 对剩余的每个对象,根据其与各簇中心的距离,将它赋给最近的簇;

3. 重新计算每个簇的平均值,更新为新的簇中心;

4. 不断重复2、3,直到准则函数收敛。

python实例演示

实例这个东西绝对是少不了的,自己做不出来例子怎么敢说自己学会了呢?所以必须进行实例练习,首先导入相关库

import numpy as npimport matplotlib.pyplot as pltfrom matplotlib import stylefrom sklearn.cluster import KMeans

然后自编一个易于理解的小数据集,并画出图,代码如下:

style.use('ggplot') x = [1, 2, 0.3, 9.2, 2.4,  9, 12]y = [2, 4, 2.5, 8.5, 0.3, 11, 10]plt.scatter(x, y)plt.show()

运行代码,得到图

你看,我这个数据就做的很好,一看就知道分为2类比较好,现在我们就用k均值聚类来看一看,代码如下:

X = []for i in range(len(x)):    X.append([x[i], y[i]])X = np.array(X)kmeans = KMeans(n_clusters=2)labels=kmeans.fit(X).labels_centroids=kmeans.fit(X).cluster_centers_

解释以下上面的代码,首先在运行k均值聚类之前我首先将数据转化成点的坐标,这个很好理解,你必须是一个一个点的输入才可以算距离嘛,而点呢就得用坐标表达。

然后就是建立2个类的聚类器,并建模我们的点X,代码中labels得到聚类后每一个点的标签,centroids得到所有的聚类中心,这都会方便我之后画图。

现在我开始画图了,代码如下:

colors = ['g.', 'r.']for i in range(len(X)):    # 先画所有数据点    plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize=10) #再画聚类中心plt.scatter(centroids[:, 0], centroids[:, 1], marker= "x", s=150, linewidths=5, zorder=10)plt.show()

还是先解释上面的代码,首先为了方便看类别,我定义了2个颜色,然后用一个循环画出所有的点,并根据点的标签给定不同颜色,然后就是画聚类中心,注意此处的聚类中心是坐标数据,所以我得切片分别得到所有聚类中心x和y,然后就画出图形如下图

可以看到,很清楚,很美观吧,很棒!

好了,今天给大家写了非监督机器学习的基础并做了一个聚类的实例,感谢大家耐心看完。发表这些东西的主要目的就是督促自己,希望大家关注评论指出不足,一起进步。内容我都会写的很细,用到的数据集也会在原文中给出链接,你只要按照文章中的代码自己也可以做出一样的结果,一个目的就是零基础也能懂,因为自己就是什么基础没有从零学Python的,加油。

往期精彩:

Python机器学习入门:线性回归实例操练

python数据分析:离群值的检测和处理

标签: #k均值聚类r语言 #k均值聚类代码python