Python聚类算法K-means

1.库安装:scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple

2.学习网站:2.3. 聚类 - sklearn

  1. KMeans 算法

KMeans 算法通过把样本分离成 n 个具有相同方差的类的方式来聚集数据,最小化称为 惯量(inertia) 或 簇内平方和(within-cluster sum-of-squares)的标准(criterion)。该算法需要指定簇的数量。它可以很好地扩展到大量样本(large number of samples),并已经被广泛应用于许多不同领域的应用领域。

k-means 算法将一组 样本 划分成 不相交的簇 , 每个都用该簇中的样本的均值 描述。 这个均值(means)通常被称为簇的 "质心(centroids)"; 注意,它们一般不是从 中挑选出的点,虽然它们是处在同一个空间。

K-means(K-均值)算法旨在选择一个质心, 能够最小化惯性或簇内平方和的标准:

4.算法流程

(1)选择K个点作为初始质心。

(2)将每个点指派到最近的质心,形成K个簇。

(3)对于上一步聚类的结果,进行平均计算,得出该簇的新的聚类中心。

(4)重复上述两步/直到迭代结束:质心不发生变化。

使用for循环计算聚类个数为2至9时的轮廓系数值,寻找最优聚类个数代码:

import pandas as pd

import numpy as np

from sklearn.cluster import KMeans

from sklearn.metrics import silhouette_samples

from sklearn.metrics import silhouette_score

import matplotlib.pyplot as plt

读取Excel文件

df = pd.read_excel('E:\python练习\Python_Kmeans\工作簿1.xlsx', sheet_name='Sheet1')

data1=df['Relative Humidity']

data1=np.array(data1)

data2=df['Temp']

data2=np.array(data2)

data3=df['Wind']

data3=np.array(data3)

DATA=np.vstack((data1,data2,data3)).T

K=range(2,9)

score=[]

for k in K:

kmeans=KMeans(n_clusters=k)

kmeans.fit(DATA)

score.append(silhouette_score(DATA,kmeans.labels_,metric='euclidean'))

plt.plot(K,score,'r*-')

plt.xlabel('k')

plt.ylabel(u'lkxs')

plt.title(u'K_vaule')

plt.show()

相关推荐
·云扬·5 小时前
【Leetcode hot 100】101.对称二叉树
算法·leetcode·职场和发展
xchenhao7 小时前
SciKit-Learn 全面分析分类任务 breast_cancer 数据集
python·机器学习·分类·数据集·scikit-learn·svm
Greedy Alg10 小时前
LeetCode 142. 环形链表 II
算法
睡不醒的kun10 小时前
leetcode算法刷题的第三十二天
数据结构·c++·算法·leetcode·职场和发展·贪心算法·动态规划
独行soc10 小时前
2025年渗透测试面试题总结-66(题目+回答)
java·网络·python·安全·web安全·adb·渗透测试
先做个垃圾出来………10 小时前
残差连接的概念与作用
人工智能·算法·机器学习·语言模型·自然语言处理
SuperCandyXu12 小时前
P3205 [HNOI2010] 合唱队-普及+/提高
c++·算法·洛谷
_OP_CHEN12 小时前
数据结构(C语言篇):(十二)实现顺序结构二叉树——堆
c语言·数据结构·算法·二叉树·学习笔记··顺序结构二叉树
Y学院12 小时前
Python 数据分析:从新手到高手的“摸鱼”指南
python·数据分析
Yingjun Mo12 小时前
1. 统计推断-基于神经网络与Langevin扩散的自适应潜变量建模与优化
人工智能·神经网络·算法·机器学习·概率论