使用UMAP可视化时遇TypeError: 'module'对象不可调用问题求助
解决UMAP可视化中的TypeError: 'module' object is not callable错误
错误原因
- 你安装的
umap包不是用于降维的官方UMAP库:umap0.1.1是一个已废弃的轻量工具,而非主流的UMAP降维实现(正确的包是umap-learn)。 - 代码中直接调用
umap(),但umap是模块对象,不是可实例化的类;同时你将变量名设为umap,会覆盖模块引用,引发后续问题。
解决步骤
1. 替换正确的UMAP包
先卸载错误的umap,安装官方的umap-learn:
pip uninstall -y umap pip install umap-learn
2. 修正代码中的导入与调用
修改代码,避免模块名和变量名冲突,正确实例化UMAP类:
# 只保留一次正确的导入 import umap retarget = {df_train['target'].value_counts().reset_index()['index'][i]: i for i in range(len(df_train['target'].value_counts()))} retarget2 = {i: k for k, i in retarget.items()} df_train['target'] = df_train['target'].map(retarget) # 实例化UMAP类时使用umap.UMAP(),变量名改用其他名称避免覆盖模块 umap_embedding = umap.UMAP(n_components=2, n_neighbors=10, min_dist=0.99).fit_transform( df_train.drop('target', axis=1).sample(15000, random_state=228), y=df_train['target'].sample(15000, random_state=228) ) # 后续可视化示例 import matplotlib.pyplot as plt plt.figure(figsize=(15, 12)) plt.scatter(umap_embedding[:, 0], umap_embedding[:, 1], c=df_train['target'].sample(15000, random_state=228), cmap='Spectral') plt.show()
关键说明
umap-learn中的核心降维类是UMAP,必须通过umap.UMAP()实例化,而非直接调用模块。fit_transform的第二个参数建议显式指定为y=,用于监督式降维;你已使用相同的random_state确保特征数据和目标变量的采样索引一致,这部分无需调整。
内容的提问来源于stack exchange,提问作者Babita
相关产品推荐
相关产品推荐

