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

相关推荐
sali-tec35 分钟前
C# 基于halcon的视觉工作流-章56-彩图转云图
人工智能·算法·计算机视觉·c#
梦想画家1 小时前
基于PyTorch的时间序列异常检测管道构建指南
人工智能·pytorch·python
PythonFun2 小时前
OCR图片识别翻译工具功能及源码
python·ocr·机器翻译
虫师c3 小时前
Python浪漫弹窗程序:Tkinter实现动态祝福窗口教程
python·tkinter·动画效果·gui编程·弹窗效果
灯火不休时4 小时前
95%准确率!CNN交通标志识别系统开源
人工智能·python·深度学习·神经网络·cnn·tensorflow
deephub4 小时前
FastMCP 入门:用 Python 快速搭建 MCP 服务器接入 LLM
服务器·人工智能·python·大语言模型·mcp
黑岚樱梦4 小时前
代码随想录打卡day23:435.无重叠区间
算法
南宫乘风4 小时前
基于 Flask + APScheduler + MySQL 的自动报表系统设计
python·mysql·flask
番石榴AI4 小时前
基于机器学习优化的主图选择方法(酒店,景点,餐厅等APP上的主图展示推荐)
图像处理·人工智能·python·机器学习
Kuo-Teng5 小时前
Leetcode438. 找到字符串中所有字母异位词
java·算法·leetcode