应用Kmeans实现聚类任务
纪要
6.1 聚类算法简介
1.聚类算法分类
粗聚类<br /> 细聚类
2.定义
一种典型的无监督学习算法,<br /> 主要用于将相似的样本自动归到一个类别中<br /> 计算样本和样本之间的相似性,一般使用欧式距离
6.2 聚类算法api初步使用
1.api
sklearn.cluster.KMeans(n_clusters=8)<br /> 参数:<br /> n_clusters:开始的聚类中心数量
6.3 聚类算法实现流程【*】
k-means其实包含两层内容:
k -- 选几个中心店<br /> means -- 均值计算
流程
1、随机设置K个特征空间内的点作为初始的聚类中心<br /> 2、对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别<br /> 3、接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值)<br /> 4、如果计算得出的新中心点与原中心点一样(质心不再移动),那么结束,否则重新进行第二步过程
kmeans小结
kmeans由于要计算质心到每一个样本的距离,所以其收敛速度比较慢
6.4 模型评估【**】
0.sse
误差平方和<br /> 值越小越好
1. 肘部法
下降率突然变缓时即认为是最佳的k值
2. SC系数
取值为[-1, 1],其值越大越好
3. CH系数
分数s高则聚类效果越好<br /> CH需要达到的目的:<br /> 用尽量少的类别聚类尽量多的样本,同时获得较好的聚类效果。
6.5 算法优化【*】
1.k_means
优点:<br /> 简单,容易理解<br /> 缺点:<br /> 特别人容易陷入到局部最优解
2.Canopy
通过绘制同心圆,进行k值选择筛选<br /> 需要确定同心圆的半径t1,t2
3.K-means++
距离平方进行求解<br /> 保证下一个质心到当前质心,距离最远
4.二分k-means
通过误差平方和,设置阈值,然后进行划分
5.k-medoids
和kmeans选取中心点的方式不同<br /> 通过从当前点选择中心点(质心)进行判断
6.kernel kmeans【了解】
映射到高维空间
7.ISODATA【了解】
动态聚类<br /> 可以更改k值的大小
8.Mini-batch K-Means【了解】
大数据集分批聚类
6.6 特征降维【*】
1.定义
就是改变特征值,选择哪列保留,哪列删除<br /> 目标是得到一组”不相关“的主变量
2.降维的两种方式
特征选择<br /> 主成分分析(可以理解一种特征提取的方式)
3.特征选择
定义:提出数据中的冗余变量<br /> 方法:<br /> Filter(过滤式):主要探究特征本身特点、特征与特征和目标值之间关联<br /> 方差选择法:低方差特征过滤<br /> 相关系数<br /> Embedded (嵌入式):算法自动选择特征(特征与目标值之间的关联)<br /> 决策树:信息熵、信息增益<br /> 正则化:L1、L2<br /> 深度学习:卷积等
4.低方差特征过滤
把方差比较小的某一列进行剔除<br /> api:<br /> sklearn.feature_selection.VarianceThreshold(threshold = 0.0)<br /> 删除所有低方差特征<br /> 注意,参数threshold一定要进行值的指定
5.相关系数
主要实现方式:<br /> 皮尔逊相关系数<br /> 斯皮尔曼相关系数<br /> 5.1 皮尔逊相关系数<br /> 通过具体值的大小进行计算<br /> 相对复杂<br /> api:<br /> from scipy.stats import pearsonr<br /> 返回值,越接近|1|,相关性越强;越接近0,相关性越弱<br /> 5.2 斯皮尔曼相关系数<br /> 通过等级差进行计算<br /> 比上一个简单<br /> api:<br /> from scipy.stats import spearmanr<br /> 返回值,越接近|1|,相关性越强;越接近0,相关性越弱
6.pca
定义:<br /> 高维数据转换为低维数据,然后产生了新的变量<br /> api:<br /> sklearn.decomposition.PCA(n_components=None)<br /> n_components<br /> 整数 -- 表示降低到几维<br /> 小数 -- 保留百分之多少的信息
6.7 案例:探究用户对物品类别的喜好【*】
1.获取数据
2.数据基本处理
2.1 合并表格
2.2 交叉表合并
2.3 数据截取
3.特征工程 — pca
4.机器学习(k-means)
5.模型评估