详解 Scikit-learn 的 metrics.adjusted_rand_score函数:调整兰德指数评估聚类结果

yizhihongxing

Scikit-learn 的sklearn.metrics.adjusted_rand_score 函数

Scikit-learn的sklearn.metrics.adjusted_rand_score函数用于计算两个簇分配结果之间的调整兰德指数。调整兰德指数是一种衡量两个簇分配结果相似程度的指标,它考虑到了随机基线,因此相较于兰德指数更具有鲁棒性。该函数的输入是两个列表,分别表示两个簇分配结果。

语法说明

函数的具体语法说明如下:

sklearn.metrics.adjusted_rand_score(labels_true, labels_pred, *, sample_weight=None)

参数说明

labels_true:array-like or list of int,表示真实的簇分配结果

labels_pred:array-like or list of int,表示预测的簇分配结果

sample_weight:array-like of shape (n_samples,), 可选,样本权重

返回值

返回一个正浮点数,表示两个簇分配结果之间的调整兰德指数。

实例一

下面是一个简单的例子,我们定义两个簇分配结果,然后计算它们之间的调整兰德指数。其中,真实的簇分配结果是[0, 0, 1, 1],而预测的簇分配结果是[1, 1, 0, 0]

from sklearn.metrics import adjusted_rand_score

labels_true = [0, 0, 1, 1]
labels_pred = [1, 1, 0, 0]

score = adjusted_rand_score(labels_true, labels_pred)
print(score)

输出结果为:

-1.0

理论上,调整兰德指数的取值范围为[-1, 1],其中-1表示完全不相关,0表示随机情况,1表示完美匹配。显然,本例中的结果是-1,说明预测的簇分配结果与真实的簇分配结果完全不同。

实例二

接下来看一个更为实际的例子,我们假设有一批文本数据,我们使用KMeans算法对其进行聚类,然后使用调整兰德指数来评价聚类的效果。下面是完整代码:

from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.cluster import KMeans
from sklearn.metrics import adjusted_rand_score
from sklearn.decomposition import TruncatedSVD

def load_data():
    categories = ['comp.graphics', 'comp.os.ms-windows.misc', 'comp.sys.ibm.pc.hardware', 'comp.sys.mac.hardware', 'comp.windows.x']
    newsgroups_train = fetch_20newsgroups(subset='train', categories=categories, remove=('headers', 'footers', 'quotes'))
    return newsgroups_train

def feature_extraction(data):
    vectorizer = TfidfVectorizer(stop_words='english')
    X = vectorizer.fit_transform(data)
    return X

def kmeans_clustering(X, labels_true):
    k = len(set(labels_true))
    svd = TruncatedSVD(n_components=k - 1)
    X = svd.fit_transform(X)
    kmeans = KMeans(n_clusters=k, random_state=0)
    labels_pred = kmeans.fit_predict(X)
    score = adjusted_rand_score(labels_true, labels_pred)
    return score

def main():
    data = load_data().data
    X = feature_extraction(data)
    labels_true = load_data().target
    score = kmeans_clustering(X, labels_true)
    print('ARI score is', score)

if __name__ == '__main__':
    main()

代码中,我们先从sklearn.datasets库中读取20个新闻组数据(不包含头部、尾部和引用),然后使用TfidfVectorizer进行特征提取,得到向量表示的文本数据。接着,我们使用TruncatedSVD进行降维,将特征数降到聚类的数目。最后,我们使用k-means算法对数据进行聚类,得到结果后使用调整兰德指数来评价聚类效果。

输出结果为:

ARI score is 0.22767248567176146

根据调整兰德指数的定义,该结果表明k-means算法对20个新闻组数据的聚类效果一般,并不完全匹配真实的簇分配结果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解 Scikit-learn 的 metrics.adjusted_rand_score函数:调整兰德指数评估聚类结果 - Python技术站

(0)
上一篇 2023年3月30日
下一篇 2023年3月30日

相关文章

  • 详解 Scikit-learn 的 svm.SVR函数:支持向量机回归器

    1. 概述 sklearn.svm.SVR 是 Scikit-learn 提供的支持向量回归的函数库,用于建立支持向量机回归模型,主要用于非线性回归问题。支持向量回归是一种基于支持向量机技术的回归分析方法,支持向量回归学习的目标是找到一个回归函数,使预测结果尽可能地接近实际值,同时最大化支持向量与超平面的距离。 2. 使用方法 2.1 调用方法 在使用 sk…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 decomposition.FastICA函数:快速独立成分分析

    Scikit-learn 的sklearn.decomposition.FastICA 函数概述 Scikit-learn 的sklearn.decomposition.FastICA 函数是一种使用快速独立成分分析(FastICA)算法提取信号中独立成分的方法。快速独立成分分析算法是一种计算效率较高的独立成分分析算法,主要应用于信号处理和突发事件检测等方面…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 feature_selection.SelectPercentile函数:选择百分比最重要的特征

    1. SelectPercentile 函数的作用 SelectPercentile 函数是 Scikit-learn 库中的特征选择函数,主要用于从原始数据中选取最佳的特征子集,以用于机器学习算法的训练或预测。其中 SelectPercentile 是一种基于统计检验的特征选择方法,它通过自主学习原始数据中各特征与结果变量的相关性,挑选出最相关的前 n 个…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 preprocessing.LabelEncoder函数:标签编码

    Scikit-learn 的sklearn.preprocessing.LabelEncoder 在机器学习中,很多算法都需要输入数字类型的数据,但实际上我们很多时候手头的数据集会是非数字型的数据,比如性别、颜色等等。我们需要把这些非数字型的数据转化为数字类型。这时候 sklearn 中的 sklearn.preprocessing.LabelEncoder…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 decomposition.NMF函数:非负矩阵分解

    Scikit-learn的sklearn.decomposition.NMF函数 作用 NMF(Non-negative Matrix Factorization)是一种无监督学习的方法,用于发现一组数据的次级结构。它可以将一个高维的非负矩阵分解为两个低维的非负矩阵的乘积。其中一个矩阵代表了数据中的特征,另一个矩阵代表了数据的潜在结构。 在Scikit-le…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 impute.IterativeImputer函数:缺失值填充器

    Scikit-learn的sklearn.impute.IterativeImputer函数 Scikit-learn的sklearn.impute.IterativeImputer函数是一种用于填补数据缺失值的函数。这个函数的主要作用是基于回归预测来对数据中的空值进行估计和填充,从而使得数据集更完整和一致,能够提高机器学习模型的性能。 这个函数主要实现的是…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 linear_model.Lasso函数:Lasso 回归模型

    sklearn.linear_model.Lasso函数简介 sklearn.linear_model.Lasso是Scikit-learn中一个用于线性回归的函数,它采用L1正则化方法,常用于特征选择和稀疏模型的优化。 Lasso模型求解目标函数为:$$\frac{1}{2n_{samples}}||Xw-y||^22+\alpha \cdot \sum^…

    sklearn-function 2023年3月30日
    00
  • 详解 Scikit-learn 的 cluster.AffinityPropagation函数:亲和传播聚类算法

    作用 sklearn.cluster.AffinityPropagation 是 Scikit-learn 中实现的集成聚类算法之一。其主要任务是将输入数据集中的数据点自动聚类成多个聚类簇。 使用方法 sklearn.cluster.AffinityPropagation 有多个参数,其中比较重要的参数有:damping、max_iter、affinity …

    sklearn-function 2023年3月30日
    00
合作推广
合作推广
分享本页
返回顶部