0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何用Python进行无监督学习

人工智能和机器人研究院 来源:cc 2019-01-21 17:23 次阅读

无监督学习是一种用于在数据中查找模式的机器学习技术。无监督算法给出的数据不带标记,只给出输入变量(X),没有相应的输出变量。在无监督学习中,算法自己去发现数据中有趣的结构。

人工智能研究总监严乐群解释说,非监督学习教学机器能够自主学习,而不需要被明确告知它们所做的一切是对是错,这是实现真正人工智能的关键。

监督与无监督学习

在监督学习中,系统试图从前面给出的例子中学习。(另一方面,在无监督学习中,系统试图直接从给出的例子中找到模式。)如果数据集被标记,它就会遇到监督问题,如果数据集没有标记,那么它就是一个监督问题。

SRC

左边的图像是监督学习的一个例子;我们使用回归技术来寻找特征之间的最佳匹配线。而在无监督学习中,输入是基于特征分离的,预测是基于它所属的集群。

重要术语

特性:用于预测的输入变量。

预测:当提供一个输入示例时,模型s的输出。

示例:数据集的一行。示例包含一个或多个特性,可能还有一个标签

标签:特性的结果。

为无监督学习准备数据

在本文中,我们使用Iris数据集进行第一次预测。该数据集包含一组150条记录,包含5个属性:花瓣长度、花瓣宽度、萼片长度、萼片宽度和类别。蝴蝶花,蝴蝶花和花色蝴蝶花是三个等级。对于我们的无监督算法,我们给出虹膜花的这四个特征,并预测它属于哪一类。

我们使用Python中的sklearn库加载Iris数据集,使用matplotlib实现数据可视化。下面是用于研究数据集的代码片段。

# Importing Modules from sklearn import datasets import matplotlib.pyplot as plt # Loading dataset iris_df = datasets.load_iris() # Available methods on dataset print(dir(iris_df)) # Features print(iris_df.feature_names) # Targets print(iris_df.target) # Target Names print(iris_df.target_names) label = {0: 'red', 1: 'blue', 2: 'green'} # Dataset Slicing x_axis = iris_df.data[:, 0] # Sepal Length y_axis = iris_df.data[:, 2] # Sepal Width # Plotting plt.scatter(x_axis, y_axis, c=iris_df.target) plt.show()

['DESCR','data','feature_names','target','target_names'] ['sepal length(cm)','sepal width(cm)','petal length(cm)','petal width(厘米)']

[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2]

['setosa''versicolor''virginica']

紫罗兰:濑户草,绿色:杂色,黄色:弗吉尼亚

在上面的图像中,左边的图像是未分类的原始数据,右边的图像是聚类的(根据数据的特征进行分类)。当给定一个要预测的输入时,它会根据它的特性检查它所属的集群,然后进行预测。

Python中的K-Means聚类

K均值是一种迭代聚类算法,其目标是在每次迭代中寻找局部最大值。选择初始所需的集群数量。因为我们知道有3个类,所以我们编写算法将数据分组到3个类中,方法是将参数n个集群传递到KMeans模型中。现在随机将三个点(输入)分配到三个集群中。根据每个点之间的质心距离,下一个给定的输入被分离成受尊重的集群。现在,重新计算所有集群的质心。

集群的每个质心是定义结果组的特征值的集合。质心特征权值的检验可以定性地解释每个聚类所代表的组的类型。

从sklearn库中导入KMeans模型,进行特征拟合和预测。

K是Python中的实现。

# Importing Modules from sklearn import datasets from sklearn.cluster import KMeans # Loading dataset iris_df = datasets.load_iris() # Declaring Model model = KMeans(n_clusters=3) # Fitting Model model.fit(iris_df.data) # Predicitng a single input predicted_label = model.predict([[7.2, 3.5, 0.8, 1.6]]) # Prediction on the entire data all_predictions = model.predict(iris_df.data) # Printing Predictions print(predicted_label) print(all_predictions)

[0] [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 2 1 1 1 1 1 2 2 1 1 1 1 2 1 1 2 1 1 2 2 1 1 1 1 2 1 1 1 1 2 1 1 1 2 1 1 1 2 1 1 2]

分层聚类

分层聚类,顾名思义,是一种构建集群层次结构的算法。该算法首先将所有数据分配给自己的集群。然后将两个最近的集群连接到同一个集群中。最后,当只剩下一个集群时,该算法就结束了。

利用树状图可以显示层次聚类的完成情况。现在让我们看一个谷物数据分层聚类的例子。数据集可以在这里找到。

Python中的分层集群实现。

# Importing Modules from scipy.cluster.hierarchy import linkage, dendrogram import matplotlib.pyplot as plt import pandas as pd # Reading the DataFrame seeds_df = pd.read_csv( "https://raw.githubusercontent.com/vihar/unsupervised-learning-with-python/master/seeds-less-rows.csv") # Remove the grain species from the DataFrame, save for later varieties = list(seeds_df.pop('grain_variety')) # Extract the measurements as a NumPy array samples = seeds_df.values """ Perform hierarchical clustering on samples using the linkage() function with the method='complete' keyword argument. Assign the result to mergings. """ mergings = linkage(samples, method='complete') """ Plot a dendrogram using the dendrogram() function on mergings, specifying the keyword arguments labels=varieties, leaf_rotation=90, and leaf_font_size=6. """ dendrogram(mergings, labels=varieties, leaf_rotation=90, leaf_font_size=6, ) plt.show()

K均值和分层聚类之间的差异

层次聚类不能很好地处理大数据,K表示聚类可以。这是因为K均值的时间复杂度是线性的,即O(n),而层次聚类的时间复杂度是二次的,即O(n2)。

在K均值聚类中,当我们从任意选择的聚类开始时,多次运行该算法生成的结果可能会有所不同。而结果在层次聚类中是可重复的。

当星系团的形状是超球形(如二维的圆形,三维的球形)时,发现K 代表工作良好。

K-Means不允许有噪声的数据,而在分层中我们可以直接使用有噪声的数据集进行聚类。

t-SNE聚类

它是一种无监督的可视化学习方法。t-SNE代表t分布随机邻居嵌入。它将高维空间映射到可以可视化的二维或三维空间。具体地说,它通过一个二维或三维点对每个高维物体进行建模,其方法是用附近的点对相似的物体建模,用高概率的远点对不同的物体建模。

Python中Iris数据集的t-SNE聚类实现。

# Importing Modules from sklearn import datasets from sklearn.manifold import TSNE import matplotlib.pyplot as plt # Loading dataset iris_df = datasets.load_iris() # Defining Model model = TSNE(learning_rate=100) # Fitting Model transformed = model.fit_transform(iris_df.data) # Plotting 2d t-Sne x_axis = transformed[:, 0] y_axis = transformed[:, 1] plt.scatter(x_axis, y_axis, c=iris_df.target) plt.show()

紫色:Setosa,绿色:Versicolor,黄色:Virginica

这里,由于Iris数据集具有四个特征(4d),将其转换成二维图表示。类似地,t-SNE模型可以应用于具有n个特征的数据集。

DBSCAN群集

DBSCAN(基于密度的噪声应用空间聚类)是一种常用的聚类算法,用于替代预测分析中的k均值。它不需要您输入集群的数量才能运行。但作为交换,您必须调优其他两个参数。

scikit-learn实现为eps和min示例参数提供了默认值,但是通常需要对它们进行调优。eps参数是在同一个邻域内需要考虑的两个数据点之间的最大距离。最小样本参数是一个邻域内被认为是一个集群的数据点的最小数量。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 机器学习
    +关注

    关注

    66

    文章

    8120

    浏览量

    130550
  • python
    +关注

    关注

    51

    文章

    4675

    浏览量

    83465

原文标题:使用Python进行无监督学习

文章出处:【微信号:gh_ecbcc3b6eabf,微信公众号:人工智能和机器人研究院】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何使用Python进行图像识别的自动学习自动训练?

    如何使用Python进行图像识别的自动学习自动训练? 使用Python进行图像识别的自动学习和自
    的头像 发表于 01-12 16:06 213次阅读

    基于transformer和自监督学习的路面异常检测方法分享

    铺设异常检测可以帮助减少数据存储、传输、标记和处理的压力。本论文描述了一种基于Transformer和自监督学习的新方法,有助于定位异常区域。
    的头像 发表于 12-06 14:57 796次阅读
    基于transformer和自<b class='flag-5'>监督学习</b>的路面异常检测方法分享

    何用Python自动套用模板批量生成PDF文档

    办最高效的事。 今天就给大家讲讲如何用Python自动套用模板批量生成下方这样的PDF文档。 1.准备 开始之前,你要确保Python和pip已经成功安装在电脑上噢,如果没有,请访问这篇文章: 超详细
    的头像 发表于 10-31 10:56 684次阅读
    如<b class='flag-5'>何用</b><b class='flag-5'>Python</b>自动套用模板批量生成PDF文档

    什么是强化学习

    强化学习是机器学习的方式之一,它与监督学习、无监督学习并列,是三种机器学习训练方法之一。 在围棋上击败世界第一李世石的 AlphaGo、在《
    的头像 发表于 10-30 11:36 1636次阅读
    什么是强化<b class='flag-5'>学习</b>

    深度学习的由来 深度学习的经典算法有哪些

    深度学习作为机器学习的一个分支,其学习方法可以分为监督学习和无监督学习。两种方法都具有其独特的学习
    发表于 10-09 10:23 355次阅读
    深度<b class='flag-5'>学习</b>的由来 深度<b class='flag-5'>学习</b>的经典算法有哪些

    机器学习模型类型分类

     机器学习按照模型类型分为监督学习模型、无监督学习模型两大类。 1. 有监督学习监督学习通常是利用带有专家标注的标签的训练数据,
    的头像 发表于 09-05 11:45 1338次阅读
    机器<b class='flag-5'>学习</b>模型类型分类

    适用于任意数据模态的自监督学习数据增强技术

    本文提出了一种适用于任意数据模态的自监督学习数据增强技术。   自监督学习算法在自然语言处理、计算机视觉等领域取得了重大进展。这些自监督学习算法尽管在概念上是通用的,但是在具体操作上是基于特定的数据
    的头像 发表于 09-04 10:07 784次阅读
    适用于任意数据模态的自<b class='flag-5'>监督学习</b>数据增强技术

    python有什么用 如何用python创建数据库

    python有什么用 如何用python创建数据库 Python是一种高级编程语言,可以用于开发各种类型的应用程序和工具。它的广泛应用使它在编程领域中极为受欢迎。
    的头像 发表于 08-28 16:41 777次阅读

    机器学习有哪些算法?机器学习分类算法有哪些?机器学习预判有哪些算法?

    有许多不同的类型和应用。根据机器学习的任务类型,可以将其分为几种不同的算法类型。本文将介绍机器学习的算法类型以及分类算法和预测算法。 机器学习的算法类型 1. 监督学习算法 在
    的头像 发表于 08-17 16:30 1393次阅读

    python数据挖掘与机器学习

    python数据挖掘与机器学习 Python是一个非常流行的编程语言,被广泛用于数据挖掘和机器学习领域。在本篇文章中,我们将探讨Python
    的头像 发表于 08-17 16:29 884次阅读

    python机器学习概述

    Python机器学习概述 机器学习是人工智能领域的一个重要分支,是一种可以自动改进和学习的算法。在过去的几十年里,机器学习已经成为计算机科学
    的头像 发表于 08-17 16:11 764次阅读

    深度学习框架和深度学习算法教程

    了基于神经网络的机器学习方法。 深度学习算法可以分为两大类:监督学习和无监督学习监督学习的基本任务是训练模型去
    的头像 发表于 08-17 16:11 714次阅读

    人工智能技术包括哪些方面

    机器学习通常分为监督学习和无监督学习监督学习通过在计算机上显示标记的数据集进行训练,使其可以预测未来的输入。无
    的头像 发表于 08-14 15:06 1259次阅读

    人工智能ai是什么

    在人工智能的发展中,最重要的是机器学习(Machine Learning),这是一种人工智能的实现方式,通过对大量数据进行分析和学习,让系统自己找到规律和特征,从而达到自主智能化的目的。在机器
    的头像 发表于 08-14 14:20 2855次阅读

    机器学习步骤详解,一文了解全过程

    机器学习是指在没有明确指令的情况下能够学习和加以改进的系统。这些系统从数据中学习,用于执行特定的任务或功能。在某些情况下,学习,或者更具体地说,训练,是在受
    的头像 发表于 05-16 09:55 4152次阅读
    机器<b class='flag-5'>学习</b>步骤详解,一文了解全过程