使用Agglomerative Clustering时出现TypeError: 'str' object is not callable错误求助
解决Agglomerative Clustering代码中的TypeError: 'str' object is not callable错误
错误原因
- 你把字符串变量
linkage_method(值为'ward')当成函数调用,这是触发TypeError的核心问题。生成树状图需要用scipy.cluster.hierarchy.linkage函数,而非自定义的字符串变量。 - 代码缺失必要的导入:
scipy.cluster.hierarchy模块的linkage和dendrogram函数,以及matplotlib.pyplot绘图模块。
修正后的完整代码
import pandas as pd from sklearn.datasets import load_iris from sklearn.cluster import AgglomerativeClustering # 补全缺失的导入 from scipy.cluster.hierarchy import linkage, dendrogram import matplotlib.pyplot as plt iris = load_iris() df = pd.DataFrame(data=iris.data, columns=iris.feature_names) X = df[['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']] linkage_method = 'ward' distance_metric = 'euclidean' agglomerative = AgglomerativeClustering(n_clusters=3, linkage=linkage_method, affinity=distance_metric) agglomerative.fit(X) # 调用scipy的linkage函数,传入参数指定链接方法和距离度量 linkage_matrix = linkage(X, method=linkage_method, metric=distance_metric) dendrogram(linkage_matrix) plt.show()
关键修改说明
- 新增
from scipy.cluster.hierarchy import linkage, dendrogram和import matplotlib.pyplot as plt,补全树状图生成与绘图的必要工具。 - 将错误的
linkage_method(X, linkage_method)调用替换为linkage(X, method=linkage_method, metric=distance_metric),使用正确的linkage函数并通过参数指定聚类方法和距离规则。
内容的提问来源于stack exchange,提问作者Hannah Watson
相关产品推荐
相关产品推荐

