机器学习之聚类分析

聚类的核心是相似度或距离,聚类分析中有多种计算距离和相似度的定义;
闵可夫斯基距离:
d = [ Σ(xi - xj)^p ] ^(1/p) p为大于1的数
python实现为:

import numpy as np 
dt = np.random.rand(10).reshape(2,5)
MinKow_len = 0
p = 10 #可自行定义
for j in range(len(dt[0])):
    MinKow_len += np.power((dt[0][j] - dt[1][j]),p)
MinKow_len =  np.power(MinKow_len,1/p)

当p = 2时即为欧式距离;
当p=1时,为曼哈顿距离
当p趋向无穷时,即为切比雪夫距离

马哈拉诺比斯距离简称马氏距离:
d = (xi - xj)^T * Σ ^-1 * (xi - xj)
python实现:

import numpy as np
dt = np.random.rand(10).reshape(2,5)
a = (dt.T[0]-dt.T[1])
b = np.linalg.inv(np.cov(dt))
c = a.T
maha_len = np.dot(np.dot(a,b),c)

K均值聚类:
K均值聚类是将所有样本点划分到K个子集中去,有K个中心,每个样本点到所属的类的中心距离最小;
K均值聚类是一个迭代的过程,
第一步是选择k个中心,计算每个样本点到每个中心的距离,将每个样本点划分到最近的类中;
第二是更新每个类的中心,重复第一步,直至聚类点不再发生变化

K均值的优点是:算法可以快速实现,聚类速度较快;
缺点是:K个数的确定,可以先通过业务需求确认,如无可通过肘部函数大致确定
初始聚类中心的选择,初始点的选择会对聚类结果有较大影响;

python sklearn简单实现:

https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html#sklearn.cluster.KMeans

你可能感兴趣的:(机器学习之聚类分析)