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
相关产品推荐
相关产品推荐

