Machine learning 如何在聚类算法中使用sklearn.inspection.permutation\u重要性

Machine learning 如何在聚类算法中使用sklearn.inspection.permutation\u重要性,machine-learning,scikit-learn,jupyter-notebook,cluster-analysis,feature-extraction,Machine Learning,Scikit Learn,Jupyter Notebook,Cluster Analysis,Feature Extraction,在真正的问题中,我没有y(真正的标签),我试图做y=None,使之成为一种无监督的学习。但它不起作用。我得到: import numpy as np from sklearn.datasets import make_classification from sklearn.cluster import KMeans X, y = make_classification(n_samples=1000, n_features=4,

在真正的问题中,我没有y(真正的标签),我试图做
y=None
,使之成为一种无监督的学习。但它不起作用。我得到:

import numpy as np
from sklearn.datasets import make_classification
from sklearn.cluster import KMeans

X, y = make_classification(n_samples=1000,
                           n_features=4,
                           n_informative=3,
                           n_redundant=0,
                           n_repeated=0,
                           n_classes=2,
                           random_state=0,
                           shuffle=False)

km = KMeans(n_clusters=3).fit(X)

result = permutation_importance(km, X, y, scoring='homogeneity_score', n_repeats=10, random_state=0, n_jobs=-1)
result
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1结果=排列重要性(km,X,y=无,评分=”同质性评分',n次重复=10,随机状态=0,n次作业=-1)
5帧
/usr/local/lib/python3.6/dist-packages/sklearn/metrics/cluster//u supervised.py in check\u clusterings(labels\u true,labels\u pred)
53如果标签_true.ndim!=1:
54升值误差(
--->55“labels\u true必须为1D:形状为%r”%(labels\u true.shape,)
56如果标签_pred.ndim!=1:
57升值误差(
ValueError:labels\u true必须为1D:形状为()

有人知道如何在没有真标签的情况下实现吗?

首先,证明k-means对特征的排列是不变的很简单……因为和是排列不变的

如果您仍然想进行实验,请尝试使用0数组作为y

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-72-81045ae9cb66> in <module>()
----> 1 result = permutation_importance(km, X, y=None, scoring='homogeneity_score', n_repeats=10, random_state=0, n_jobs=-1)

5 frames
/usr/local/lib/python3.6/dist-packages/sklearn/metrics/cluster/_supervised.py in check_clusterings(labels_true, labels_pred)
     53     if labels_true.ndim != 1:
     54         raise ValueError(
---> 55             "labels_true must be 1D: shape is %r" % (labels_true.shape,))
     56     if labels_pred.ndim != 1:
     57         raise ValueError(

ValueError: labels_true must be 1D: shape is ()