首页 > 其他分享 >[机器学习复习笔记] Clustering 聚类 (K-means实现)

[机器学习复习笔记] Clustering 聚类 (K-means实现)

时间:2023-11-05 23:56:23浏览次数:32  
标签:Clustering means text sum KMeans 距离 mu 聚类 质心

Cluster (KMeans实现)

1. KMeans 介绍及符号说明

给定样本集 \(D = \{ x_1, x_2, ..., x_m \}\),\(\text{KMeans}\) 算法针对聚类所得的簇划分 \(\mathcal C = \{ C_1, C_2, ..., C_k \}\)(分为 \(k\) 类) 最小化平方差:

  • 平方差
    其中 \(x\) 为当前簇 \(C_i\) 中的样本向量,\(\mu_i\) 为簇 \(C_i\) 的均值向量

\[\begin{split} E &= \sum_{i = 1}^{k} \sum_{x \in C_i} ||x - \mu_i||^2_2 \end{split} \]

  • 均值向量

\[\mu_i = \frac{1}{|C_i|}\sum_{x \in C_i} x \]

  • 样本向量 \(x_j\) 与均值向量 \(\mu_i\) 之间的距离,\(d_{ji} = \text{dist}_f(x_j, \mu_i)\),其中函数 \(f\) 可以是 闵可夫斯基距离欧几里得距离 或者 曼哈顿距离

    • 闵可夫斯基距离

    \[\text{dist}_{mk}(x_i, x_j) = (\sum_{u = 1}^{d}|x_{iu} - x_{ju}|^p)^{\frac{1}{p}} \]

    • 欧几里得距离
      当 \(p\) 取2时,闵可夫斯基距离即为欧几里得距离

    \[\text{dist}_{ed}(x_i, x_j) = \sqrt{\sum_{u = 1}^{d}|x_{iu} - x_{ju}|^2} \]

    • 曼哈顿距离
      当 \(p\) 取1时,闵可夫斯基距离即为曼哈顿距离

    \[\text{dist}_{man}(x_i, x_j) = ||x_i - x_j||_1 = \sum_{u = 1}^{d}|x_{iu} - x_{ju}| \]


2. KMeans算法过程



PS: 一般情况下,为了避免运行时间过长,会设置一个最大迭代轮数或者最小调整幅度阈值,当超过最大轮数或者小于最小阈值时,退出循环。


3. KMeans 代码

from sklearn import datasets
from sklearn.cluster import KMeans
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import accuracy_score

df = datasets.load_iris()
X, y = df['data'], df['target']
X = MinMaxScaler().fit_transform(X)

# 设定初始质心 KMeans是无监督学习 为了让结果和target进行比较 人工设置初始质心
init = np.array([X[y==0].mean(axis=0), X[y==1].mean(axis=0), X[y==2].mean(axis=0)])
print("初始质心: \n", init, end="\n\n")

# 分成三类
model = KMeans(n_clusters=3, n_init=init)

# 模型训练
model.fit(X)

# 输出迭代之后的质心
centroid = model.cluster_centers_
print("经过迭代之后质心为: \n", centroid, end="\n\n")

# 测试集 测试结果显示
y_pred = model.predict(X)

# 模型准确率测试
accuracy = accuracy_score(y, y_pred)
print("测试准确率为: ", accuracy, end="\n\n")

标签:Clustering,means,text,sum,KMeans,距离,mu,聚类,质心
From: https://www.cnblogs.com/MAKISE004/p/17811601.html

相关文章

  • [机器学习复习笔记] Spectral Clustering 谱聚类
    SpectralClustering谱聚类1.邻接矩阵无向图\(G=(V,E)\),所有顶点之间的权重构成一个\(n\timesn\)的矩阵:\[W=\begin{bmatrix}w_{11}&w_{12}&\cdots&w_{1n}\\w_{21}&w_{22}&\cdots&w_{2n}\\\vdots&\vdots&\ddots......
  • K-means聚类算法
    目录K-means聚类算法聚类和分类的区别找相似簇是什么K-means和KNN中理解K的含义如何量化“相似”1)随机选择质心%20%E9%9A%8F%E6%9C%BA%E9%80%89%E6%8B%A9%E8%B4%A8%E5%BF%83)2)求出新质心点%20%E6%B1%82%E5%87%BA%E6%96%B0%E8%B4%A8%E5%BF%83%E7%82%B9)总结Sklearn使用K-means算......
  • 关于“聚类算法”
        今天我在csdn上看到一篇文章关于聚类算法的文章。我了解到聚类算法是一类无监督学习的算法,用于将数据集中的对象按照相似性进行分组或聚集。聚类算法的目标是将相似的数据点归为一类,同时将不相似的数据点分开。        常见的聚类算法包括:1.K-means聚类算法。......
  • R语言文本挖掘:kmeans聚类分析上海玛雅水公园景区五一假期评论词云可视化|附代码数据
    互联网时代,大量的新闻信息、网络交互、舆情信息以文本形式存储在数据库中,如何利用数据分析和文本挖掘的算法,将海量文本的价值挖掘出来,成为我们团队近期的一个研究方向,本案例就是我们的一个尝试。文本聚类其实也就是聚类分析在文本方向上的应用,首先我们要把一个个文档的自然语言转......
  • R语言有限混合模型聚类FMM、广义线性回归模型GLM混合应用分析威士忌市场和研究专利申
    最近我们被客户要求撰写关于有限混合模型聚类FMM的研究报告,包括一些图形和统计输出。摘要有限混合模型是对未观察到的异质性建模或近似一般分布函数的流行方法。它们应用于许多不同的领域,例如天文学、生物学、医学或营销。本文给出了这些模型的概述以及许多应用示例。介绍有限混合......
  • 【scipy 基础】--聚类
    物以类聚,聚类算法使用最优化的算法来计算数据点之间的距离,并将它们分组到最近的簇中。Scipy的聚类模块中,进一步分为两个聚类子模块:vq(vectorquantization):提供了一种基于向量量化的聚类算法。vq模块支持多种向量量化算法,包括K-means、GMM(高斯混合模型)和WAVG(均匀分布)。hierar......
  • SPSS Modeler分析物流发货明细数据:K-MEANS(K均值)聚类和Apriori关联规则挖掘|附代码数据
    全文链接:http://tecdat.cn/?p=32633原文出处:拓端数据部落公众号物流发货明细数据在现代物流业中扮演着至关重要的角色。通过对这些数据进行挖掘和分析,我们可以发现隐含在背后的供应链运营规律和商业模式,从而指导企业在物流策略、成本管理和客户服务等方面做出更加科学和有效的决......
  • R语言上市公司经营绩效实证研究 ——因子分析、聚类分析、正态性检验、信度检验|附代
    全文链接:http://tecdat.cn/?p=32747原文出处:拓端数据部落公众号随着我国经济的快速发展,上市公司的经营绩效成为了一个备受关注的话题。本文旨在探讨上市公司经营绩效的相关因素,并运用数据处理、图示、检验和分析等方法进行深入研究,帮助客户对我国45家上市公司的16项财务指标进行......
  • K-medoids聚类算法
    发展:们每次选簇的平均值作为新的中心,迭代直到簇中对象分布不再变化。因此一个具有很大极端值的对象会扭曲数据分布,造成算法对极端值敏感在聚类分析中,异常值通常会引起问题,因为它们可能会被分配到一个独立的聚类,从而干扰正常的聚类结果。这可能导致聚类算法产生不合理或不稳定的......
  • R语言改进的K-Means(K-均值)聚类算法分析股票盈利能力和可视化|附代码数据
    全文链接:http://tecdat.cn/?p=32418原文出处:拓端数据部落公众号大量数据中具有"相似"特征的数据点或样本划分为一个类别。聚类分析提供了样本集在非监督模式下的类别划分。人们在投资时总期望以最小的风险获取最大的利益,面对庞大的股票市场和繁杂的股票数据,要想对股票进行合理......