添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

这章讲的其实是 非监督学习 。大多数情况下从现实世界获取的数据并不附有标记,通过非监督学习仍然可以从这些数据中有所收获。

最基本的聚类算法,也是目前使用最多的聚类算法叫做 K-均值(K-Means)

文章目录如下:

聚类简单应用

假设John和Katie都喜欢收藏电影并为它们划分等级,从非常差到非常好。John偏好动作片,Katie偏好文艺片,如下图所示,无需了解电影的细节信息,我们就可以将其划分为A类别和B类别。了解这些信息的意义在于下次Katie进入影院的时候可以向她推荐合适的电影。

通过 聚类算法 ,可以推论不同的类别,甚至可以通过电影标题了解这些类别的含义。

K-Means算法流程

首先随意画出 聚类中心 ,第一次基本上不会是正确的聚类中心。接下来K-Means算法会循环如下两步:

  1. 分配 (assign)
  2. 优化 (optimize)

分配 :假设对于cluster 1,选择距离中心 1 比中心 2更近的红色点。
方法如下:在两个集群中心之间画一条线,然后再画一条等距且垂直的线。这条垂直线将区域分为两个部分。一个是与第一个中心点较近的部分,另一个是与第二个中心点较近的部分。

优化: 通过移动聚类中心到这些点的总二次距离降到最小。

在这里插入图片描述
上述两个步骤的反复迭代即K-Means算法 ,最终结果如下图所示:

K-Means聚类可视化

一个将K-Means聚类可视化的非常棒的网站: http://www.naftaliharris.com/blog/visualizing-k-means-clustering/

sklearn

K-Means in sklearn

先来看几个重要参数:

n_clusters : 默认值为8。代表算法中的聚类数量。可以由使用者根据情况自行设置。
max_iter : 默认值为300。矩心分配和移动迭代的次数,即算法迭代的次数。在多数情况下,算法到达最大迭代次数前就可能终止了。
n_int :算法初始化的次数。即初始化时选择不同的矩心(centroid seeds),最后会选择表现最好的那个。

聚类数量n_clusters是最最重要的参数。

K-Means的局限

这小节主要描述K-Means算法 能做和不能做的 是什么。主要讨论对象是 局部极小值

问题 :对于一个固定的数据集,一个固定数量的蔟中心(cluster center),在运行K-Means算法时,是否总会得到相同的结果?

答案是否定的。 K-Means是所谓的爬山算法(climbing algorithm),因此它非常依赖初始聚类中心所处的位置。 可能会有多个局部极小值,好的或是不好的 。如果我们有越多的聚类中心,就能找到越多的局部最小值,所以我们需要将算法运行多次已找出最好的局部极小值。

比如下图的这个例子:

前言这章讲的其实是非监督学习。大多数情况下从现实世界获取的数据并不附有标记,通过非监督学习仍然可以从这些数据中有所收获。最基本的聚类算法,也是目前使用最多的聚类算法叫做K-均值(K-Means)。文章目录如下:聚类简单应用假设John和Katie都喜欢收藏电影并为它们划分等级,从非常差到非常好。John偏好动作片,Katie偏好文艺片,如下图所示,无需了解电影的细节信息,我们就可...
1.导入相应包 from sklearn. cluster import KMeans from sklearn.metrics import silhouette_samples, silhouette_score from matplotlib import pyplot as plt from matplotlib import cm import numpy as np from sklearn.datasets import make_blobs 2.生成数据集 X, y = make_blobs
k-means 聚类 算法 k-means 算法属于无 监督 学习的一种 聚类 算法,其目的为:在不知数据所属类别及类别数量的前提下,依据数据自身所暗含的特点对数据进行 聚类 。对于 聚类 过程中类别数量k的选取,需要一定的先验知识,也可根据“类内间距小,类间间距大“(一种 聚类 算法的理想情况)为目标进行实现。 需要用到sklearn库,scikit-learn是Python的一个开源 机器学习 模块,它建立在NumPy,S...
Kmeans KMeans算法将一组N个样本的特征矩阵X划分为K个无交集的簇,直观上来看是簇是一组一组聚集在一起的数 据,在一个簇中的数据就认为是同一类。簇就是 聚类 的结果表现。 簇中所有数据的均值 通常被称为这个簇的“质心”(centroids)。在一个二维平面中,一簇数据点的质心的 横坐标就是这一簇数据点的横坐标的均值,质心的纵坐标就是这一簇数据点的纵坐标的均值。同理可推广至高维空间。 Kmeans 随机抽取K个样本作为最初的质心 1.1 无 监督 学习与 聚类 算法 在过去的五周之内,我们学习了决策树,随机森林,逻辑回归,他们虽然有着不同的功能,但却都属于“有 监督 学习”的一部分,即是说,模型在训练的时候,即需要特征矩阵X,也需要真实标签y。 机器学习 当中,还有相当一部分算法属于“无 监督 学习”,无 监督 的算法在训练的时候只需要特征矩阵X,不需要标签。我们曾经学过的PCA降维算法就是无 监督 学习中的一种, 聚类 算法,也是无 监督 学习的代表算法之一。 聚类 算法又叫做“无 监督 分类”,其目的是将数据划分成有意义或有用的组(或簇)。这种划分可以基于我们
KMeans重要参数:n_ cluster s 参数n_ cluster s 是 KMeans 中的 K,表示我们告诉模型要分几类。这是 Kmeans 当中唯一一个必填的参数,默认为 8 类,但通常我们的 聚类 结果会是一个小于 8 的结果。通常,在开始 聚类 之前,并不知道n_ cluster s 究竟是多少,因此我们要对它进行探索。 当拿到一个数据集,如果可能的话,希望能够通过绘图先观察一下这个数据集的数据分布,以此为 聚类 时输入的 n_ cluster s 做一个参考。 尝试在代码框执行以下代码: 首先,我们来自己创建一个数据
n_ cluster s 是用于 聚类 算法的参数,表示要将数据分为多少个簇( cluster s)。 聚类 算法是一种无 监督 学习技术,它将相似的数据分为一组,而不需要事先知道组的数量或每组的组成情况。n_ cluster s 参数指定了算法需要将数据分成多少组。 它的值需要人为确定,不同的数据集可能需要不同的 n_ cluster s 值。在实际使用中,通常需要通过试验不同的值,并通过可视化或评估指标等方法来评估结果...
from sklearn. cluster import KMeans from sklearn.metrics import silhouette_samples, silhouette_score import matplotlib.pyplot as plt import matplotlib.cm as cm # colormap import numpy as np # 基于我们的轮廓系数来选择最佳的n_ cluster s # 想要知道每个聚出来的类的轮廓系数是多少,还想要一个. 对于均值分布,其中每个均值都是样本量为 n 的均值,该分布的标准偏差就等于总体标准偏差除以平方根 n,这就叫做中心极限定理,数学公式表达为 M = ( X1 + X2 + … + Xn ) / n M ~ N(μ,σ²/n) 中心极限定理适用于任何总体,总体可以是任何形状。 假设我们从中抽取一个样本并计算出均值,然后再抽取出一个样本并计算出均值,持续这么操...