python:用 sklearn.metrics 评价 K-Means 聚类模型

sklearn 的 metrics 模块提供的聚类模型评价指标如下:

ARI 评价法(兰德系数): adjusted_rand_score

AMI 评价法(相互信息): adjusted_mutual_info_score

V-measure 评分 : completeness_score

FMI 评价法 : fowlkes_mallows_score

轮廓系数评价法 : silhouette_score

Calinski-Harabasz 指数评价法 : calinski_harabasz_score

编写 test_sklearn_4.py 如下

python 复制代码
# -*- coding: utf-8 -*-
""" 使用 sklearn 评价 K-Means 聚类模型 """
#import numpy as np
#import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import preprocessing
from sklearn import cluster

# 1.加载 鸢尾花 数据集
iris = datasets.load_iris()
# 数据集的数据
iris_data = iris['data']
# 数据集的标签
iris_target = iris['target']

# 使用 FMI 评价法评价 K-Means 聚类模型
from sklearn.metrics import fowlkes_mallows_score
for i in range(2,7):
    # 构建并训练模型
    kmeans = cluster.KMeans(n_clusters=i, n_init=10,random_state=123).fit(iris_data)
    score = fowlkes_mallows_score(iris_target, kmeans.labels_)
    print(f"iris_{i} 类 FMI 评价分数: {score}")
print('--------')

# 使用轮廓系数评价法评价 K-Means 聚类模型
from sklearn.metrics import silhouette_score
silhScore = []
for i in range(2,10):
# 构建并训练模型
    kmeans = cluster.KMeans(n_clusters=i, n_init=10,random_state=123).fit(iris_data)
    score = silhouette_score(iris_data, kmeans.labels_)
    silhScore.append(score)
plt.figure(figsize=(10,6))
plt.plot(range(2,10), silhScore, linewidth=1.5, linestyle='-')
plt.show()

# 使用 Calinski-Harabasz 指数评价 K-Means 聚类模型
from sklearn.metrics import calinski_harabasz_score
for i in range(2,7):
    # 构建并训练模型
    kmeans = cluster.KMeans(n_clusters=i, n_init=10,random_state=123).fit(iris_data)
    score = calinski_harabasz_score(iris_data, kmeans.labels_)
    print(f"iris_{i} 类 calinski_harabasz 指数为: {score}")

cmd

set OMP_NUM_THREADS=1

python test_sklearn_4.py

复制代码
(base) D:\python> python test_sklearn_4.py
iris_2 类 FMI 评价分数: 0.7504732564880243
iris_3 类 FMI 评价分数: 0.8208080729114153
iris_4 类 FMI 评价分数: 0.7539699941396392
iris_5 类 FMI 评价分数: 0.7254830776265845
iris_6 类 FMI 评价分数: 0.614344977586966
--------
iris_2 类 calinski_harabasz 指数为: 513.9245459802768
iris_3 类 calinski_harabasz 指数为: 561.62775662962
iris_4 类 calinski_harabasz 指数为: 530.4871420421675
iris_5 类 calinski_harabasz 指数为: 495.54148767768777
iris_6 类 calinski_harabasz 指数为: 469.8366331329009

参考书:【Python 数据分析与应用】第6章 使用 scikit-learn 构建模型

相关推荐
Actinen25 分钟前
【Python】——注释
python
自动化小秋葵1 小时前
Python入门经典题目
开发语言·python
while(1){yan}1 小时前
数据结构之堆
数据结构·python·算法
凌晨一点的秃头猪2 小时前
Python 常见 bug 总结和异常处理
开发语言·python·bug
mortimer2 小时前
用PySide6 构建一个响应式视频剪辑工具:多线程与信号机制实战
python·ffmpeg·pyqt
新子y2 小时前
【小白笔记】input() 和 print() 这两个函数
笔记·python
文火冰糖的硅基工坊2 小时前
[人工智能-大模型-72]:模型层技术 - 模型训练六大步:①数据预处理 - 基本功能与对应的基本组成函数
开发语言·人工智能·python
Python×CATIA工业智造4 小时前
Pycatia二次开发基础代码解析:组件识别、选择反转与链接创建技术解析
python·pycharm
小宁爱Python4 小时前
从零搭建 RAG 智能问答系统 6:Text2SQL 与工作流实现数据库查询
数据库·人工智能·python·django
m0_748241234 小时前
Java注解与反射实现日志与校验
java·开发语言·python