sklearn聚类模型评估代码_sklearn建模及评估(聚类)

本文介绍了如何使用sklearn构建和评估聚类模型,以K-Means为例展示了模型构建过程,并通过TSNE进行数据降维可视化。同时,利用FMI指标评估了不同类别数的聚类效果。
摘要由CSDN通过智能技术生成

作为机器学习工具的

sklearn

,它主要作用是构建模型和评估。其主要的模型分为聚类、分类、回归等,而没有模型也有适应不同场景的多个算法。接下来我们从这几点进行简要总结。

1、聚类模型

聚类的输入是一组未被标记(所谓

target

值或

lable

)的样本,聚类根据数据自身的距离或相似度将它们划分为若干组。划分的原则是组内(内部)距离最小化,而组间(外部)距离最大化。sklearn提供的各种聚类方法有如下图所示:

聚类算法的实现需要

sklearn

的估计器(

Estimator

),估计其拥有

fit

predict

两个方法。以

iris

数据为例,使用

sklearn

估计器构建

K-Means

聚类模型,其实例如下代码所示:

1.1 构建聚类模型代码

from sklearn.datasets import load_iris

from sklearn.preprocessing import MinMaxScaler

from sklearn.cluster import KMeans

iris = load_iris()

iris_data = iris['data'] ##提取数据集中的特征

iris_target = iris['target'] ## 提取数据集中的标签</

1. 利用sklearn中的层次聚类模块对样本数据进行聚类: 可以使用AgglomerativeClustering类来实现层次聚类,该类提供了多种聚类方式(如单连接、完全连接、平均连接等)。以下是一个简单的层次聚类示例: ```python from sklearn.cluster import AgglomerativeClustering import numpy as np # 构造数据 X = np.array([[1, 2], [1, 4], [1, 0], [4, 2], [4, 4], [4, 0]]) # 定义模型 model = AgglomerativeClustering(n_clusters=2) # 训练模型 model.fit(X) # 打印每个样本的所属簇 print(model.labels_) ``` 2. 对比不同聚类算法的分类性能: 对于不同的数据集和聚类任务,不同的聚类算法可能会有不同的表现。可以使用sklearn提供的metrics模块来评估聚类算法的分类性能,如轮廓系数、Calinski-Harabasz指数和Davies-Bouldin指数等。以下是一个简单的对比不同聚类算法性能的示例: ```python from sklearn.datasets import make_blobs from sklearn.cluster import KMeans, AgglomerativeClustering from sklearn.metrics import silhouette_score, calinski_harabasz_score, davies_bouldin_score # 构造数据 X, y = make_blobs(n_samples=1000, centers=4, random_state=2) # 定义模型 models = [KMeans(n_clusters=4), AgglomerativeClustering(n_clusters=4, linkage='ward'), AgglomerativeClustering(n_clusters=4, linkage='average')] # 训练模型评估性能 for model in models: y_pred = model.fit_predict(X) silhouette = silhouette_score(X, y_pred) calinski_harabasz = calinski_harabasz_score(X, y_pred) davies_bouldin = davies_bouldin_score(X, y_pred) print(f'Model: {model.__class__.__name__}, ' f'Silhouette score: {silhouette:.3f}, ' f'Calinski-Harabasz score: {calinski_harabasz:.3f}, ' f'Davies-Bouldin score: {davies_bouldin:.3f}') ``` 3. 对层次聚类模型进行性能评估: 对于层次聚类,可以使用cophenetic correlation coefficient来评估聚类结果的质量。cophenetic correlation coefficient是评估层次聚类结果的一种指标,它衡量了聚类结果中样本之间的距离与原始数据中样本之间的距离的相关性。它的取值范围在[-1, 1]之间,值越接近1表示聚类结果的质量越高。以下是一个简单的对层次聚类模型进行性能评估的示例: ```python from sklearn.cluster import AgglomerativeClustering from scipy.cluster.hierarchy import dendrogram, cophenet from scipy.spatial.distance import pdist import matplotlib.pyplot as plt import numpy as np # 构造数据 X = np.random.rand(10, 2) # 定义模型 model = AgglomerativeClustering(n_clusters=2) # 训练模型 model.fit(X) # 计算聚类结果的cophenetic correlation coefficient Z = model.children_ c, coph_dists = cophenet(Z, pdist(X)) print(f'Cophenetic correlation coefficient: {c:.3f}') # 绘制树状图 plt.title('Hierarchical Clustering Dendrogram') dendrogram(Z) plt.show() ``` 在上述示例中,我们首先构造了一个随机的二维数据集X,然后使用AgglomerativeClustering进行聚类。接着,我们使用cophenet函数计算了聚类结果的cophenetic correlation coefficient,并打印输出了该指标的值。最后,我们使用dendrogram函数绘制了聚类结果的树状图。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值