gapstatistic的optimalik出错:“int”对象不是iterab

2024-06-07 15:49:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我在玩这个kaggle kernel,它是关于运行文本聚类的k-means。我想通过自动识别聚类的最佳k值来扩展它。我正试图使用^{}来实现这个目的

作为第一步,我必须安装带有:conda install -c milesgranger gap-stat的包

然后,我尝试了下面的代码

from gap_statistic import OptimalK
optimalK = OptimalK(parallel_backend='rust')
k, gapdf = optimalK(X, cluster_array=np.arange(1, 11))

最终导致了这个错误: ValueError:此函数不支持稀疏矩阵。也许scipy.sparse.linalg函数中的一个会起作用<我知道我已经把最后一行代码改成了k, gapdf = optimalK(X.toarray(), cluster_array=np.arange(1, 11)),因为optimalik函数将接受numpy数组

这个改变很好地处理了第一个错误。然后出现另一个错误:TypeError:'int'object is not iterable

猜测这是一个异常,未在optimalik中处理。尽管如此,我能做些什么来解决这个问题吗


Tags: 函数文本错误np聚类arraykernelcluster
2条回答

k, gapdf = optimalK(X.toarray(), cluster_array=np.arange(1, 11))与optimalik的源代码冲突,如ForceBru's Answer

以下代码更改将删除错误。它是正确的等价于错误的片段

# optimal k value
k = optimalK(X.toarray(), cluster_array=np.arange(1, 11))

# dataframe with gap values
gapdf = optimalK.gap_df.head()

根据the source codeOptimalK.__call__返回整数(参见第88行):

return int(self.gap_df.loc[np.argmax(self.gap_df.gap_value.values)].n_clusters)

您的代码尝试使用k, gapdf将此整数解压为两个对象,如下所示:

k, gapdf = optimalK(X, cluster_array=np.arange(1, 11))

当然,这是不可能的

相关问题 更多 >

    热门问题