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

ValueError: Index长度不匹配(4064 vs 1) TF-IDF向量化后稀疏矩阵大小异常

问题根因

调用tfidf.fit_transform(train_x)时传入的是维度为(4064,1)的DataFrame对象,而TfidfVectorizer要求输入为一维文本序列(如Series、字符串列表)。此时向量器会把DataFrame的列名(即clean_text这一个字符串)作为输入语料处理,最终生成的稀疏矩阵仅1列,和预期按行处理文本的逻辑完全不符,是报错的核心原因。

修复方案

  • 修改向量化阶段的传入参数,指定取DataFrame的clean_text列作为输入:
tfidf = TfidfVectorizer()
# 传入一维Series而非整个二维DataFrame
train_x_vect = tfidf.fit_transform(train_x['clean_text'])
test_x1 = tfidf.transform(test_x['clean_text'])
  • 若修改后仍存在异常,先检查文本清洗结果是否符合预期:
# 统计训练集空文本、空值数量
print(train_x['clean_text'].isnull().sum())
print((train_x['clean_text'] == '').sum())

如果存在大量空文本,需要调整clean_text函数的过滤规则,避免将所有有效内容过滤为空。

  • 转换DataFrame前先验证稀疏矩阵维度:
# 正常输出应为 (4064, 词汇表总数量)
print(train_x_vect.shape)

确认维度正常后再执行转DataFrame操作即可。

注:scikit-learn 1.0及以上版本需将代码中tfidf.get_feature_names()替换为tfidf.get_feature_names_out(),避免版本兼容导致的报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:48:04