Python机器学习——无监督学习

机器学习

  • 一、Sklearn库标准数据集及基本功能
    • 1、波士顿房价数据集
    • 2、鸢尾花数据集
    • 3、手写数字数据集
    • 4、sklearn库的基本功能
      • ①分类任务
      • ②回归任务
      • ③聚类任务
      • ④降维任务
  • 二、无监督学习
    • 1、聚类
    • 2、Sklearn vs. 聚类
    • 3、sklearn.cluster
    • 4、降维
    • 5、分类 vs. 降维
    • 6、sklearn vs. 降维
  • 三、K-Means聚类算法
  • 四、DBSCAN聚类算法
  • 五、主成分分析(PCA)
  • 六、NMF

一、Sklearn库标准数据集及基本功能

1、波士顿房价数据集

波士顿房价数据集包含506组数据,每条数据包含房屋以及房屋周围的详细信息。其中包括城镇犯罪率、一氧化氮浓度、住宅平均房间数、到中心区域的加权距离以及自住房平均房价。因此,波士顿房价数据集能够应用到回归问题上。
使用sklearn.datasets.load_boston即可加载相关数据集
sklearn.datasets.load_boston
重要参数:
return_X_y:表示是否返回target(即价格),默认为False,只返回data(即属性)。

from sklearn.datasets import load_boston
boston = load_boston()
print(boston.data.shape)
from sklearn.datasets import load_boston
data, target = load_boston(return_X_y=True)
print(data.shape)
print(target.shape)

2、鸢尾花数据集

鸢尾花数据集采集的是鸢尾花的测量数据以及其所属的类别。
测量数据包括:萼片长度、萼片宽度、花瓣长度、花瓣宽度。
类别共分为三类:Iris Setosa,Iris Versicolour,Iris Virginica。该数据集可用于多分类问题。
使用sklearn.datasets.load_iris即可加载相关数据集

sklearn.datasets.load_iris

重要参数:
return_X_y:若为True,则以(data,target)形式返回数据;默认为False,表示以字典形式返回数据全部信息(包括data和taget)。

3、手写数字数据集

手写数字数据集包括1797个0-9的手写数字数据,每个数字由88大小的矩阵构成,矩阵中值的范围是0-16,代表颜色的深度。
使用
sklearn.datasets.load_digits*即可加载相关数据集

sklearn.datasets.load_digits

参数:
return_X_y:若为True,则以(data,target)形式返回数据;默认为False,表示以字典形式返回数据全部信息(包括data和taget)。
n_class:表示返回数据的类别数,如:n_class=5,则返回0到4的数据样本。

4、sklearn库的基本功能

sklearn库共分为6大部分,分别用于完成分类任务、回归任务、聚类任务、降维任务、模型选择以及数据的预处理。

①分类任务

分类模型 加载模块
最近邻算法 neighbors.NearestNeighbors
支持向量算法 svm.SVC
朴素贝叶斯 nai_bayes.GaussianNB
决策树 tree.DecisionTreeClassifier
集成方法 ensemble.BaggingClassifier
神经网络 neural_network.MLPClassifier

②回归任务

回归模型 加载模块
岭回归 linear_model.Ridge
Lasso回归 linear_model.Lasso
弹性回归 linear_model.ElasticNet
最小角回归 linear_model.Lars
贝叶斯回归 linear_model.BayesianRidge
逻辑回归 linear_model.LogisticRegression
多项式回归 linear_model.PolynomialFeatures

③聚类任务

聚类方法 加载模块
K-means cluster.KMeans
AP聚类 cluster.AffinityPropagation
均值漂移 cluster.MeanShift
层次聚类 cluster.AgglomerativeClustering
DBSCAN cluster.DBSCAN
BIRCH cluster.Birch
谱聚类 cluster.SpectralClustering

④降维任务

降维方法 加载模块
主成分分析 decomposition.PCA
截断SVD和LSA decomposition.TruncatedSVD
字典学习 decomposition.SparseCoder
因子分析 decomposition.FactorAnalysis
独立成分分析 decomposition.FastICA
非负矩阵分解 decomposition.NMF
LDA decomposition.LastentDirichletAllocation

二、无监督学习

利用无标签的数据学习数据的分布或数据与数据之间的关系被称作无监督学习。
有监督学习和无监督学习的最大区别在于数据是否有标签
无监督学习最常用的场景是聚类和降维

1、聚类

聚类,就是根据数据的“相似性”将数据分为多类的过程。
评估两个不同样本之间的“相似性”,通常使用的方法就是计算两个样本之间的“距离”。使用不同的方法计算样本间的距离会关系到聚类结果的好坏。

2、Sklearn vs. 聚类

scikit-learn库(简称sklearn库)提供的常用聚类算法函数包含在sklearn.cluster这个模块中,如:K-Means,近邻传播算法,DBSCAN,等。
以同样的数据集应用于不同的算法,可能会得到不同的结果,算法所耗费的时间也不尽相同,这是由算法的特性决定的。

3、sklearn.cluster

sklearn.cluster模块提供的各聚类算法函数可以使用不同的数据形式作为输入:
标准数据输入格式:[ 样本个数,特征个数 ]定义的矩阵形式。
相似性矩阵输入格式:即由[ 样本数目 ]定义的矩阵形式,矩阵中的每一个元素为两个样本的相似度,如DBSCAN,AffinityProPagation(近邻传播算法)接受这种输入。如果以余弦相似度为例,则对角线元素全为1。矩阵中每个元素的取值范围为[ 0,1 ]。

算法名称 参数 可扩展性 相似性度量
K-means 聚类个数 大规模数据 点间距离
DBSCAN 邻域大小 大规模数据 点间距离
Gaussian Mixtures 聚类个数及其他超参 复杂度高,不合适处理大规模数据 马氏距离
Birch 分支因子,阈值等其他超参 大规模数据 两点间的欧式距离

4、降维

降维,就是在保证数据所具有的代表性特性或者分布的情况下,将高维数据转化为低维数据的过程。
数据的可视化
精简数据

5、分类 vs. 降维

聚类和分类都是无监督学习的典型任务,任务之间存在关联,比如某些高维数据的分类可以通过降维处理更好的获得,另外学界研究也表明代表性的分类算法如k-means与降维算法如NMF之间存在等价性。

6、sklearn vs. 降维

降维是机器学习领域的一个重要研究内容,有很多被工业界和学术界接受的典型算法,截至到目前sklearn库提供7种降维算法。
降维过程也可以被理解为对数据集的组成成分进行分解的过程,因此sklearn为降维模块命名为decomposition,在对降维算法调用需要使用sklearn.decomposition模块。

算法名称 参数 可扩展性 相似性度量
PCA 所降维度及其他超参 大规模数据 信号处理等
FastICA 所降维度及其他超参 超大规模数据 图形图像特征提取
NMF 所降维度及其他超参 大规模数据 图形图像特征提取
LDA 所降维度及其他超参 大规模数据 文本数据,主题挖掘

三、K-Means聚类算法

K-Means聚类算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。

  • 随机选择k个点作为初始的聚类中心
  • 对于剩下的点,根据其与聚类中心的距离,将其归入最近的簇
  • 对每个簇,计算所有点的均值作为新的聚类中心
  • 重复2、3直到聚类中心不再发生改变

调用K-Means方法所需参数:

  • n_clusters:用于指定聚类中心的个数
  • init:初始聚类中心的初始化方法
  • max_iter:最大的迭代次数
  • data:加载的数据
  • label:聚类后各数据所属的标签
  • fit_predict():计算簇中心以及为簇分配序号
  • 一般调用时只用给出n_clusters即可,init默认是k-means++,max_iter默认是300

四、DBSCAN聚类算法

DBSCAN算法将数据点分为三类:

  • 核心点:在半径Eps内含有超过MinPts数目的点。
  • 边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的邻域内。
  • 噪音点:既不是核心点也不是边界点的点。

DBSCAN算法流程:

  • 将所有点标记为核心点、边界点或噪声点;
  • 删除噪声点;
  • 为距离在Eps之内的所有核心点之间赋予一条边;
  • 每组连通的核心点形成一个簇;
  • 将每个边界点指派到一个与之关联的核心点的簇中(哪一个核心点的半径范围之内)。

DBSCAN主要参数:

  • eps:两个样本被看作邻居节点的最大距离
  • min_samples:簇的样本数
  • metric:距离计算方式

五、主成分分析(PCA)

主成分分析是最常用的一种降维方法,通常用于高维数据集的探索与可视化,和可以用作数据压缩和预处理等。
PCA可以把具有相关性的高维变量合成为线性无关的低维变量,称为主成分。主成分能够尽可能保留原始数据的信息。
原理:矩阵的主成分就是其协方差矩阵对应的特征向量,按照对应的特征值大小进行排序,最大的特征值就是第一主成分,其次是第二主成分,以此类推。

sklearn.decomposition.PCA

主要参数:

  • n_components:指定主成分的个数,即降维后数据的维度。
  • svd_solver:设置特征值分解的方法,默认为‘auto’,其他可选有‘full’,‘arpack’,‘randomized’。

六、NMF

非矩阵分解是在矩阵中所有元素均为非负数约束条件之下的矩阵分解方法。
基本思想:给定一个非负矩阵V,NMF能够找到一个非负矩阵W和一个非负矩阵H,使得矩阵W和H的乘积近似等于矩阵V中的值。

sklearn.decomposition.NMF

主要参数:

  • n_components:用于指定分解后矩阵的单个维度k
  • init:W矩阵和H矩阵的初始化方式,默认为‘nndsvdar’

你可能感兴趣的:(Python,python)