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