监督学习与非监督学习的一个最本质的区:监督学习的应用要求数据集事先有标签,而非监督学习则不需要标签。
无监督学习就是事先没有训练数据样本,直接对数据进行建模,比如说聚类。
聚类定义
将物理或抽象对象的集合分成由类似的对象组成的多个类的过程称为聚类。由聚类所生成的簇是一组数据对象的集合,这些对象与同一簇中的对象相似度较高,与其它簇中的对象相似度较低。
聚类分析的类型:Q型聚类:对样品的聚类;R型聚类:对变量的聚类
定量变量与定性变量:
定量是连续变量,定性指属性变量
定量变量数据在聚类分析之前要进行数据变换。
一、数据的变换方法
需要先做数据中心化或标准化处理。
1.中心化变换
其中
2.标准化变换
R语言中,可以用scale(x, center = TRUE, scale = TRUE)函数作数据中心化和标准化变换处理,其中x为待变换的数据矩阵,center参数控制是否中心化,scale参数控制是否标准化,两者缺省值都是TRUE。
二、距离与相似系数:
类的度量:常用的类的度量方法有两种,距离和相似系数。距离用来度量样品之间的相似性,相似系数用来度量变量之间的相似性。
相似度是根据描述对象的属性值来度量的,距离是经常采用的度量方式。
三、K-均值聚类
K-means(K均值)
1 随机选取K个数据点作为‘种子’
2 根据数据点与‘种子’的距离大小进行类分配
3 更新类中心点的位置,以新的类中心点作为‘种子’
4 按照新的‘种子’对数据归属的类进行重新分配
5 更新类中心点(-->3-->4),不断迭代,直到类中心点变得很小
优点: 算法原理简单,处理快
当聚类密集时,类与类之间区别明显,效果好
缺点: K是事先给定的,K值选定难确定
对孤立点、噪声敏感
结果不一定是全局最优,只能保证局部最优。
很难发现大小差别很大的簇及进行增量计算
结果不稳定,初始值选定对结果有一定的影响
计算量大
K-means 在 sklearn方法
sklearn.cluster.KMeans(
n_clusters = 8, #聚类个数,K值,默认8
init = 'k-means++',
n_init = 10,
max_iter = 300,
tol = 0.0001,
precompute_distances = 'auto',
verbose = 0,
random_state = None,
copy_x = True,
n_jobs = 1,
algorithm = 'auto'
)
一些重要的参数:
n_clusters = 8, #聚类个数,K值,默认8
init = 'k-means++', #初始化类中心点选择方法,可选:
{
'k-means++', #是一种优化选择方法,比较容易收敛
'random', #随机选择
an ndarray #可以通过输入ndarray数组手动指定中心点
}
max_iter: #最大迭代数
precompute_distances: #预计算距离,计算速度更快但占用更多内存。auto True
copy_x # True,原始数据不变,False直接在原始数据上做更改
https://blog.csdn.net/wsp_1138886114/article/details/80475981