You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用UMAP可视化时遇TypeError: 'module'对象不可调用问题求助

解决UMAP可视化中的TypeError: 'module' object is not callable错误

错误原因

  • 你安装的umap包不是用于降维的官方UMAP库:umap 0.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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 03:31:05