为何出现TypeError:AgglomerativeClustering收到意外参数'affinity'?
解决AgglomerativeClustering的TypeError问题
问题原因
scikit-learn 1.2版本对AgglomerativeClustering的API做了调整,移除了affinity参数,改用metric参数指定距离度量方式。另外你的代码存在导入错误:导入的是FeatureAgglomeration,但实例化的是AgglomerativeClustering,这可能引发类混淆或版本兼容问题。
修复步骤
- 修正导入语句:确保导入正确的聚类类:
from sklearn.cluster import AgglomerativeClustering from sklearn.metrics import pairwise_distances
- 替换参数名:将
affinity="cosine"替换为metric="cosine":
model = AgglomerativeClustering(n_clusters=7, linkage="average", metric="cosine")
补充说明
- 若
linkage参数设置为"ward",则只能使用欧氏距离(metric="euclidean"),这是ward方法的硬性要求。 - 不推荐降级scikit-learn到1.1.x版本适配旧API,建议直接适配新版本API以获得更好的兼容性和功能支持。
内容的提问来源于stack exchange,提问作者jvtriplesix
相关产品推荐
相关产品推荐

