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

ops/2024/12/16 19:22:49/

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

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 构建模型


http://www.ppmy.cn/ops/142444.html

相关文章

MySQL 主从复制与高可用架构

一、MySQL 主从复制概述 (一)定义与作用 MySQL 主从复制是一种允许在多个 MySQL 数据库服务器之间进行数据同步的技术。简单来说,就是可以把数据从一个 MySQL 服务器(主服务器、主节点)复制到一个或多个从节点&#…

Coturn 实战指南:WebRTC 中的 NAT 穿透利器

1. 什么是 Coturn? Coturn 是一种开源的 TURN(Traversal Using Relays around NAT)服务器,用于解决 NAT 穿透问题。它帮助客户端在受限网络环境(例如防火墙或 NAT 后面)中实现双向通信,常用于 WebRTC 应用、VoIP、在线游戏等场景。 2. Cotur…

QT中静态变量无法翻译的问题

在 Qt 中,静态变量无法被翻译(即通过 QObject::tr() 或 QTranslator 支持多语言)主要是因为 Qt 的翻译机制依赖于 QObject 和动态对象上下文,而静态变量不属于任何特定的对象上下文。以下是详细原因及解决方案。 1. 原因分析 简单…

《Vue进阶教程》第八课:watch()函数的基本使用

往期内容: 《Vue零基础入门教程》合集(完结) 《Vue进阶教程》第一课:什么是组合式API 《Vue进阶教程》第二课:为什么提出组合式API 《Vue进阶教程》第三课:Vue响应式原理 《Vue进阶教程》第四课&#…

如何使用 Docker Compose 创建 LAMP 环境 ?

现如今,通过 Docker 容器化部署环境已经逐渐成为主流,特别是在部署像 LAMP (Linux、Apache、MySQL、PHP) 这样的复杂环境时。本教程旨在带您完成使用 Docker-Compose 建立 LAMP 环境的整个过程,同时还包括定制 PHP 环境的步骤,安装…

密码学——密码学概述、分类、加密技术(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 密码学 大数据…

⭐Redis - 手动实现分布式锁 Redisson 的使用

概述 定义:分布式系统或集群模式下,多进程或多节点之间 “可见” 并且 “互斥” 的锁机制 功能:确保同一时刻只有一个进程或节点能够获取某项资源的访问权 特点 互斥高可用多进程可见高并发 (高性能)安全性 (避免死锁问题) 常见的分布式锁 …

Flutter 桌面端串口配置

前言 我使用flutter_libserialport包在macOS中实现串口通信的功能,可以实现数据收发,但是收到的内容是乱码。这种情况一般都是由于波特率和硬件设备不一致导致的。 配置串口配置 1.打开串口读写 import package:flutter_libserialport/flutter_libser…