【问题标题】:sihouette score returns inconsistent number of sample剪影分数返回的样本数量不一致
【发布时间】:2021-02-16 00:12:45
【问题描述】:

我正在使用 scikit 的 silhouette_score 层次聚类。我不是来自数据科学背景,也不是 python。但是我确实知道一些其他语言并且知道层次聚类逻辑是如何工作的。我被告知使用 scikit 的剪影分数来计算剪影分数。此代码返回错误

ValueError: Found input variables with inconsistent numbers of samples: [149, 150]

使用的数据为 csv,包含 151 行,第一行为数据类型。所以总共有150个数据。

这是我的代码

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.cluster.hierarchy import dendrogram, linkage, fcluster
from sklearn.metrics import silhouette_score

iris = pd.read_csv("Iris.csv")

#iris hierarichal
iris_df = iris.iloc[:, 1:5]

plt.figure(figsize=(10, 7))
plt.title("Iris Dendograms Average Method")

link = linkage(iris_df, method='average')

dend = dendrogram(link)
plt.show()

clusters = fcluster(link, 3, criterion='maxclust')

print(silhouette_score(link, clusters))

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    这里有问题:

    print(silhouette_score(link, clusters))
    

    改变它,你就可以走了:

    print(silhouette_score(X, clusters))
    

    silhouette_score请见docs

    X:如果 metric == “预先计算”,则数组 [n_samples_a, n_samples_a],否则为 [n_samples_a, n_features]。
    样本之间的成对距离数组,或特征数组。

    【讨论】:

      猜你喜欢
      • 2022-08-14
      • 2019-04-06
      • 2017-10-24
      • 1970-01-01
      • 2016-05-16
      • 2018-12-01
      • 2021-06-14
      • 2016-05-17
      • 1970-01-01
      相关资源
      最近更新 更多