一、什么是无监督学习
1、没有目标值—无监督学习
一家广告平台需要根据相似的人口学特征和购买习惯将美国人口分成不同的小组,以便不同的用户采取不同的营销策略。
Airbnb需要将自己的房屋清单分组成不同的社区,以便用户能更轻松地查阅这些清单(对房屋进行分类)。
一个数据科学团队需要降低一个大型数据集的维度的数量,以便简化建模和降低文件大小(比如PCA降维)。
二、无监督学习包含算法
1、聚类
K-means(K均值聚类)
2、降维
PCA
三、K-means原理
1、K-means的聚类效果图
一开始拿到的数据是这样的
要把它分成三个堆:
2、K-means聚类步骤
(1)随机设置K个特征空间内的点作为初始的聚类中心
K值:超参数
K值如何确定?
1)根据需求,比如公司要求把客户分成三个类别,那么K值就取3
2)如果没有需求,可以做网格搜索,调节超参数,选择最合适的K值
PS:超参数是指在训练模型之前需要手动设置的参数。用户可以自己设定的参数,就叫超参数。
第一步就是随机找到3个点作为初始聚类中心
(2)对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别
计算每个点到聚类中心的距离,取距离最近的那个把它颜色标记成一样的颜色
(3)接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值)
对每个堆重新求一个中心点,得到新的3个聚类中心
(4)如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行第二步过程
定标准的时候如果只是相近,没有完全重合,我们也可以终止聚类
3、KNN和K-means的区别
一个是预测的样本计算和每个样本的距离,然后根据每个样本的分类选择合适的K,来预测要预测的样本的类别。
这个是选择合适的K个样本。然后计算n-K的样本到这个K个样本的距离,近的就归哪个。
虽然都是物以群分。但是,一个是有目标值,一个没有。
4、3个堆的中心点怎么求
A(a1, b1, c1)
B(a2, b2, c2)
...
Z(a26, b26, c26)
比如有A到Z个样本,分别有a、b、c特征值
中心点的坐标,中心点(a平均, b平均, c平均)
四、K-means API
1、sklearn.cluster.KMeans(n_clusters=8, init='k-means++')
k-means聚类
n_clusters:开始的聚类中心数量(K值有几个)
init:初始化方法,默认为'k-means++'(对k-means的优化方法)
labels_:默认标记的类型,可以和真实值比较(不是值比较)。用完之后用点属性查看