一文简述多种无监督聚类算法的Python实现

作者:媒体转发 时间:2018-05-29 21:06

字号
人工智能+区块链的发展趋势及应用调研报告

无监督学习是一类用于在数据中寻找模式的机器学习技术。无监督学习算法使用的输入数据都是没有标注过的,这意味着数据只给出了输入变量(自变量 X)而没有给出相应的输出变量(因变量)。在无监督学习中,算法本身将发掘数据中有趣的结构。

一文简述多种无监督聚类算法的Python实现

人工智能研究的领军人物 Yan Lecun,解释道:无监督学习能够自己进行学习,而不需要被显式地告知他们所做的一切是否正确。这是实现真正的人工智能的关键!

监督学习 VS 无监督学习

在监督学习中,系统试图从之前给出的示例中学习。(而在无监督学习中,系统试图从给定的示例中直接找到模式。)因此,如果数据集被标注过了,这就是一个监督学习问题;而如果数据没有被标注过,这就是一个无监督学习问题。

一文简述多种无监督聚类算法的Python实现

上图是一个监督学习的例子,它使用回归技术找到在各个特征之间的最佳拟合曲线。而在无监督学习中,根据特征对输入数据进行划分,并且根据数据所属的簇进行预测。

重要的术语

特征:进行预测时使用的输入变量。

预测值:给定一个输入示例时的模型输出。

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

标签:特征对应的真实结果(与预测相对应)。

准备无监督学习所需的数据

在本文中,我们使用 Iris 数据集来完成初级的预测工作。这个数据集包含 150 条记录,每条记录由 5 个特征构成——花瓣长度、花瓣宽度、萼片长度、萼片宽度、花的类别。花的类别包含 Iris Setosa、Iris VIrginica 和 Iris Versicolor 三种。本文中向无监督算法提供了鸢尾花的四个特征,预测它属于哪个类别。

本文使用 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 (cm)'] 

[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 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 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 2 2] 

['setosa' 'versicolor' 'virginica'] 

一文简述多种无监督聚类算法的Python实现

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

聚类分析

在聚类分析中,数据被划分为不同的几组。简而言之,这一步旨在将具有相似特征的群组从整体数据中分离出来,并将它们分配到簇(cluster)中。

可视化示例:

一文简述多种无监督聚类算法的Python实现

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接