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

Top2Vec训练报错TypeError:numpy.float64无法解析为整数

训练Top2Vec时触发TypeError:numpy.float64无法被解析为整数

最初因文档数量不足,通过多次拼接DataFrame扩充数据(数据含2列字符串类型),但训练Top2Vec时触发TypeError,无法定位浮点数来源。

代码示例

# 增加文档数量
data = [df, df, df, df, df]
df_extra = pd.concat(data)
print(len(df_extra))

# 训练Top2Vec模型
model = Top2Vec(df_extra.values, embedding_model='universal-sentence-encoder')

错误回溯信息

TypeError                                 Traceback (most recent call last)
Cell In[84], line 2
      1 # Train the top2vec model
----> 2 model = Top2Vec(df_extra.values, embedding_model='universal-sentence-encoder')

File ~/opt/anaconda3/envs/top2vec/lib/python3.10/site-packages/top2vec/Top2Vec.py:666, in Top2Vec.__init__(...)
---> 666 self.compute_topics(umap_args=umap_args, hdbscan_args=hdbscan_args, topic_merge_delta=topic_merge_delta)

File ~/opt/anaconda3/envs/top2vec/lib/python3.10/site-packages/top2vec/Top2Vec.py:1266, in Top2Vec.compute_topics(...)
---> 1266 cluster = hdbscan.HDBSCAN(**hdbscan_args).fit(umap_model.embedding_)

...

File hdbscan/_hdbscan_tree.pyx:733, in hdbscan._hdbscan_tree.get_clusters()

TypeError: 'numpy.float64' object cannot be interpreted as an integer

解决指引

  • 修正输入数据格式:Top2Vec要求输入为一维文档数组,当前传入的df_extra.values是二维数组(对应原DataFrame的2列),会导致后续处理异常。需提取单列文本作为输入,例如df_extra['文本列名'].values。
  • 显式指定HDBSCAN整数参数:默认参数可能因版本问题被解析为浮点数,初始化Top2Vec时可传入明确的整数参数,示例:
    model = Top2Vec(df_extra['文本列名'].values, 
                    embedding_model='universal-sentence-encoder',
                    hdbscan_args={'min_cluster_size': 5, 'min_samples': 3})
    
  • 避免过度重复数据:重复拼接会造成严重数据冗余,干扰HDBSCAN聚类逻辑。优先寻找真实数据扩充方式,或调整min_cluster_size等参数适配小数据集。
  • 检查依赖版本兼容性:确认hdbscan、umap-learn、top2vec的版本匹配,比如hdbscan 0.8.29+搭配top2vec 1.0.24+,版本不匹配易触发类型转换bug。

内容的提问来源于stack exchange,提问作者Magnetar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:12:44