我正在使用 scikit-learn(又名 sklearn)进行一些聚类,一切正常,直到我尝试使用函数的gamma
参数spectral_clustering
。
我在使用 anaconda (1.5.1) 管理的虚拟环境中使用 sklearn (0.18.1) 和 python (3.5.2)。
在函数的官方文档中,提到了一个参数gamma
:
sklearn.cluster.SpectralClustering 类(n_clusters=8,eigen_solver=None,random_state=None,n_init=10,gamma=1.0,affinity='rbf',n_neighbors=10,eigen_tol=0.0,assign_labels='kmeans',degree=3 , coef0=1, kernel_params=None, n_jobs=1)
但是,在我的机器上,当我尝试将参数传递gamma
给函数时,出现以下错误:
TypeError:spectral_clustering() 得到了一个意外的关键字参数“gamma”
然后,当我显示该功能的帮助页面时,我得到的信息与官方文档help(spectral_clustering)
完全不同:
光谱聚类(亲和力,n_clusters=8,n_components=None,eigen_solver=None,random_state=None,n_init=10,eigen_tol=0.0,assign_labels='kmeans')
这就像一些参数丢失了。我想也许它来自 conda 包,但用 pip 安装它并不能解决问题。
我什至尝试在虚拟环境之外安装它,但仍然存在类似问题。
但是,我问了我的两位同事,一位和我有同样的问题,而另一位可以在help(spectral_clustering)
函数中看到与官方文档中相同的信息。
如何获得与官方文档中相同的功能?
我spectral_clustering
在我的管道之一中使用该函数,如下所示:
if clt_mtd == 'spectral':
# Spectral clustering
labels = spectral_clustering(sm, n_clusters=num_clt, random_state=seed, gamma=0.1)
只要我不尝试修改gamma
参数,此功能就可以正常工作。
已解决: 我的错误来自我用作参考的官方示例之一。
解决方案:
正如下面的评论中所讨论的,SpectralClustering
并且spectral_clustering
是不一样的。最后一个由fit
类中的函数使用,SpectralClustering
并且不gamma
作为参数,因为这个之前在函数中使用过fit
。
因此,为了能够修改gamma
参数,首先应该实例化一个SpectralClustering
对象并使用fit
该类提供的功能。