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()

相关推荐
Persistent的粽子!6 小时前
双指针算法:最大盛水容器
c++·算法·leetcode
XiaoMaqqqq6 小时前
目前知名的IP驱动产业新场景新工具有哪些
网络·python·网络协议·tcp/ip
玩大数据的龙威6 小时前
农经权二轮延包—固定比例尺不定图幅的公示图批量生成
python·arcgis·二轮延包公示图
hold?fish:palm7 小时前
44 二叉搜索树中第K小的元素
开发语言·c++·算法
Chen—LSN7 小时前
C语言——⽂件操作(1)
c语言·开发语言·c++·经验分享·笔记·算法·链表
anew___7 小时前
《从零手写操作系统 (11):文件系统初探——initrd与VFS抽象层》
java·javascript·算法
虎虎(_ _)。゜zzZ8 小时前
关于字典中的解包问题
python
全栈弄潮儿²⁰²⁴8 小时前
Python实战第2期: 变量与数据类型
python·变量·数据类型·python实战
Chen—LSN8 小时前
C语言——文件操作(2)
c语言·开发语言·c++·经验分享·笔记·算法·c#
程序员yu8 小时前
会编网络:别被入门教程骗了,Python实用能力不在语法本身
开发语言·python·学习·算法