[机器学习]聚类算法

1 聚类算法简介

python 复制代码
# 导包
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import calinski_harabasz_score
# 构建数据
x,y=make_blobs(n_samples=1000,n_features=2,centers=[[-1,-1],[0,0],[1,1],[2,2]],cluster_std=[0.4,0.2,0.2,0.3],random_state=22)

plt.scatter(x[:,0],x[:,1])
plt.show()
python 复制代码
# 聚类
model=KMeans(n_clusters=3,random_state=22)
model.fit(x)
y_pred=model.predict(x)
# 可视化
plt.scatter(x[:,0],x[:,1],c=y_pred)
plt.show()
# 评估
print(calinski_harabasz_score(x,y_pred))

2 KMeans实现流程

3 模型评估方法

3.1 SSE聚类评估指标

python 复制代码
import os
os.environ['OMP_NUM_THREADS'] = '1'
# 导包
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import calinski_harabasz_score
# 构建数据
x,y=make_blobs(n_samples=1000,n_features=2,centers=[[-1,-1],[0,0],[1,1],[2,2]],cluster_std=[0.4,0.2,0.2,0.3],random_state=22)

sse=[]
# 计算不同K值下的SSE,来获取K值
for k in range(1,51):
    km=KMeans(n_clusters=k,max_iter=100,random_state=22)
    km.fit(x)
    sse.append(km.inertia_)

plt.plot(range(1,51),sse)
plt.grid()
plt.show()

3.2 SC聚类评估指标

python 复制代码
# 计算SC系数
import os
os.environ['OMP_NUM_THREADS'] = '1'
# 导包
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn.metrics import calinski_harabasz_score,silhouette_score
# 构建数据
x,y=make_blobs(n_samples=1000,n_features=2,centers=[[-1,-1],[0,0],[1,1],[2,2]],cluster_std=[0.4,0.2,0.2,0.3],random_state=22)

sc=[]
# 计算不同K值下的SSE,来获取K值
for k in range(2,51):
    km=KMeans(n_clusters=k,max_iter=100,random_state=22)
    y_pred=km.fit_predict(x)
    sc_=silhouette_score(x,y_pred)
    sc.append(sc_)

plt.plot(range(2,51),sc)
plt.grid()
plt.show()

3.3 CH聚类评估指标

相关推荐
高亦真5 分钟前
今天是学习嵌入式的第38天
linux·学习·算法
来让爷抱一个11 分钟前
2026 表示工程实战:八帧跳跃不许特征乱漂,百智云精灵图把激活引导写进素材包
人工智能·机器学习
tellmewhoisi26 分钟前
机器学习:概述2(建模流程,特征工程和鸢尾花案例)
机器学习
明志数科39 分钟前
机器人商业化验证中 真工业场景数据与训练场数据的差异分析
人工智能·机器学习
Zane19941 小时前
冒泡、选择、插入排序都是O(n²),希尔排序凭什么说自己能更快
算法·排序算法
余额瞒着我当琳2 小时前
C++多态深入解析:多态概念,多态实现条件,虚函数表与内存分布,常见问题及注意事项
c++·算法
维克兜率天2 小时前
【维克】模块3总结:从一行空数据,到一个能跑的模型
python·深度学习·算法
飞Link2 小时前
定积分理论与 Python 仿真完全指南
python·算法
闲研随记2 小时前
RL算法学习:ArgMaxRL
算法·llm·强化学习·rl