无监督机器学习算法没有任何监督者提供任何指导。 这就是为什么它们与真正的人工智能紧密结合的原因。

在无人监督的学习中,没有正确的答案,也没有监督者指导。 算法需要发现用于学习的有趣数据模式。

什么是聚类?

基本上,它是一种无监督学习方法,也是用于许多领域的统计数据分析的常用技术。 聚类主要是将观测集合划分为子集(称为聚类)的任务,以同一聚类中的观测在一种意义上相似并且与其他聚类中的观测不相似的方式。 简而言之,可以说聚类的主要目标是根据相似性和不相似性对数据进行分组。

例如,下图显示了不同群集中的类似数据 -

数据聚类算法

以下是数据聚类的几种常用算法 -

K-Means算法
K均值聚类算法是众所周知的数据聚类算法之一。 我们需要假设簇的数量已经是已知的。 这也被称为平面聚类。 它是一种迭代聚类算法。 该算法需要遵循以下步骤 -

第1步 - 需要指定所需的K个子组的数量。
第2步 - 修复群集数量并将每个数据点随机分配到群集。 换句话说,我们需要根据群集数量对数据进行分类。

在这一步中,计算聚类质心。

由于这是一种迭代算法,因此需要在每次迭代中更新K个质心的位置,直到找到全局最优值或换句话说质心到达其最佳位置。

以下代码将有助于在Python中实现K-means聚类算法。 我们将使用Scikit-learn模块。

导入必需的软件包 -

import matplotlib.pyplot as plt
import seaborn as sns; sns.set()
import numpy as np
from sklearn.cluster import KMeans

以下代码行将通过使用sklearn.dataset包中的make_blob来生成包含四个blob的二维数据集。

from sklearn.datasets.samples_generator import make_blobsX, y_true = make_blobs(n_samples = 500, centers = 4,cluster_std = 0.40, random_state = 0)

可以使用下面的代码可视化数据集 -
plt.scatter(X[:, 0], X[:, 1], s = 50);
plt.show()

得到以下结果 -

在这里,将kmeans初始化为KMeans算法,以及多少个群集(n_clusters)所需的参数。

kmeans = KMeans(n_clusters = 4)

需要用输入数据训练K-means模型。

kmeans.fit(X)
y_kmeans = kmeans.predict(X)
plt.scatter(X[:, 0], X[:, 1], c = y_kmeans, s = 50, cmap = 'viridis')centers = kmeans.cluster_centers_

下面给出的代码将根据数据绘制和可视化机器的发现,并根据要找到的聚类数量进行拟合。

plt.scatter(centers[:, 0], centers[:, 1], c = 'black', s = 200, alpha = 0.5);
plt.show()

得到以下结果 -

均值偏移算法

它是另一种在无监督学习中使用的流行和强大的聚类算法。 它不做任何假设,因此它是非参数算法。 它也被称为分层聚类或均值聚类分析。 以下将是该算法的基本步骤 -

  • 首先,需要从分配给它们自己的集群的数据点开始。
  • 现在,它计算质心并更新新质心的位置。
  • 通过重复这个过程,向簇的顶点靠近,即朝向更高密度的区域移动。
  • 该算法停止在质心不再移动的阶段。

在下面的代码的帮助下,在Python中实现了Mean Shift聚类算法。使用Scikit-learn模块。

导入必要的软件包 -

import numpy as np
from sklearn.cluster import MeanShift
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")

以下代码将通过使用sklearn.dataset包中的make_blob来生成包含四个blob的二维数据集。

from sklearn.datasets.samples_generator import make_blobs

可以用下面的代码可视化数据集 -

centers = [[2,2],[4,5],[3,10]]
X, _ = make_blobs(n_samples = 500, centers = centers, cluster_std = 1)
plt.scatter(X[:,0],X[:,1])
plt.show()

执行上面示例代码,得到以下结果 -

现在,我们需要用输入数据来训练Mean Shift聚类模型。

ms = MeanShift()
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_

以下代码将按照输入数据打印聚类中心和预期的聚类数量 -

print(cluster_centers)
n_clusters_ = len(np.unique(labels))
print("Estimated clusters:", n_clusters_)

 [[ 3.23005036 3.84771893] [ 3.02057451 9.88928991]] Estimated clusters: 2 

下面给出的代码将有助于根据数据绘制和可视化机器的发现,并根据要找到的聚类数量进行装配。

colors = 10*['r.','g.','b.','c.','k.','y.','m.']for i in range(len(X)):plt.plot(X[i][0], X[i][1], colors[labels[i]], markersize = 10)
plt.scatter(cluster_centers[:,0],cluster_centers[:,1],
marker = "x",color = 'k', s = 150, linewidths = 5, zorder = 10)
plt.show()

执行上面示例代码,得到以下结果 -

测量群集性能

现实世界的数据不是自然地组织成许多独特的群集。 由于这个原因,要想象和推断推理并不容易。 这就是为什么需要测量聚类性能及其质量。 它可以在轮廓分析的帮助下完成。

轮廓分析

该方法可用于通过测量群集之间的距离来检查聚类的质量。 基本上,它提供了一种通过给出轮廓分数来评估像集群数量这样的参数的方法。 此分数是衡量一个群集中每个点与相邻群集中的点的距离的度量。

分析轮廓分数
得分范围为[-1,1]。 以下是对这个分数的分析 -

  • 得分为+1分 - 得分接近+1表示样本距离相邻集群很远。
  • 得分为0分 - 得分0表示样本与两个相邻群集之间的决策边界处于或非常接近。
  • 得分为-1分 - 得分为负分数表示样本已分配到错误的群集。

计算轮廓分数

在本节中,我们将学习如何计算轮廓分数。

轮廓分数可以通过使用以下公式来计算 -

这里,`

易百教程移动端:请扫描本页面底部(右侧)二维码并关注微信公众号,回复:"教程" 选择相关教程阅读或直接访问:http://m.yiibai.com 。

转载于:https://www.cnblogs.com/duoba/p/9534679.html

易百教程人工智能python修正-人工智能无监督学习(聚类)相关推荐

  1. 易百教程人工智能python修正-人工智能监督学习(分类)

    分类技术或模型试图从观测值中得出一些结论. 在分类问题中,我们有分类输出,如"黑色"或"白色"或"教学"和"非教学". ...

  2. 易百教程人工智能python修正-人工智能监督学习(回归)

    回归是最重要的统计和机器学习工具之一. 我们认为机器学习的旅程从回归开始并不是错的. 它可以被定义为使我们能够根据数据做出决定的参数化技术,或者换言之,允许通过学习输入和输出变量之间的关系来基于数据做 ...

  3. 易百教程人工智能python修正-人工智能NLTK性别发现器

    在这个问题陈述中,将通过提供名字来训练分类器以找到性别(男性或女性). 我们需要使用启发式构造特征向量并训练分类器.这里使用scikit-learn软件包中的标签数据. 以下是构建性别查找器的Pyth ...

  4. 易百教程wxpython_WxPython教程

    wxPython是一个Python包装wxWidgets(这是用 C++ 编写),一个流行的跨平台GUI工具包.由Robin Dunn以及Harri Pasanen开发,wxPython是作为一个Py ...

  5. android教程 易百教程,Android RadioGroup

    RadioGroup中使用类组单选按钮.如果我们选中一个单选按钮属于一个单选按钮组,它会自动取消选中同一组内的任何先前检查的单选按钮. RadioGroup 属性 以下是RadioGroup中控件有关 ...

  6. mysql 易百教程

    mysql 易百教程  https://www.yiibai.com/mysql/text.html 转载于:https://www.cnblogs.com/dengmeinan/p/9767915. ...

  7. 比较好的学习网站:易百教程网

    比较好的学习网站:易百教程网 例如网站上关于pg和es的教程: postgrepSQL https://www.yiibai.com/html/postgresql/2013/080567.html ...

  8. 易百教程——JavaFX教程

    转载自  易百教程--JavaFX教程 JavaFX是Java的下一代图形用户界面工具包.JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序. JavaFX允许开发人员快速 ...

  9. 易百教程Oracle,Hibernate入门程序

    全屏 在第一个Hibernate入门示例程序中,我们将使用eclipse IDE创建一个简单的hibernate应用程序示例.要在Eclipse IDE中创建第一个hibernate应用程序,需要遵循 ...

最新文章

  1. 【C 语言】内存四区原理 ( 常量区示例 | 不同函数返回的相同字符串的指针地址相同 )
  2. Linux系统查看分区文件系统类型
  3. 一行命令同时修改maven项目中多个mudule的版本号
  4. 【学习笔记】3、Jupyter Notebook无法打开问题处理
  5. UBUNTU 12.04 下配置 HAXM 加速 ANDROID模拟器
  6. Nginx配置指令之listen
  7. unity5.x Translate平移移动 以及GetComponent获取组件
  8. 设计模式装饰者模式_装饰者模式如何拯救了我的一天
  9. python在线作业_南开大学20春学期《Python编程基础》在线作业参考答案
  10. C#基础系列——Attribute特性使用
  11. [软件测试_LAB1]安装junit和hamcrest及其使用
  12. 具有自适应空间强度约束和隶属度链接的鲁棒模糊c均值聚类算法
  13. 系统登录界面(收集)
  14. ListBox横向绑定数据
  15. eclipse 安装包下载
  16. 【知识点总结】数字电子技术(数电)
  17. rep()函数的学习
  18. 引导(booting)
  19. 吃饭只吃5分饱,生活才会很美好
  20. 高清视频体验大幅提升,来数数我们应用了哪些新算法

热门文章

  1. 4 app版本号 swift_已开源 app 实现检查更新的简单方式
  2. java1.5以后的一些新特性
  3. linux网络操作系统应用技术规程,GB/T 32395-2015
  4. 万亿大模型究竟怎么用?达摩院浙大上海人工智能实验室联手推出洛犀平台:大小模型端云协同进化...
  5. 用数学方式打开Facebook新Logo,真的和视频号Logo来自同一方程
  6. 专访清华陈文光:搞好CS基础建设再寻思AI专业,读博与否?看个人能力
  7. 开发安全的 API 所需要核对的清单
  8. Java foreach与for循环性能对比
  9. C#部署安装,将用户安装路径记录下写入注册表,并启动
  10. ONAP — CCVPN 跨域 SDN 协同编排