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

Python中文本分类过采样报错:ValueError(1D/2D数组不匹配)求解

Fixing "ValueError: Expected 2D array, got 1D array instead" with RandomOverSampler for Text DataFrames

这个报错我之前处理过,原因很直接:RandomOverSampler(以及绝大多数scikit-learn/imblearn的工具)要求输入的特征数据是二维数组(形状为(样本数, 特征数)),但你传入的df['Features']是一维的pandas Series(形状为(样本数,)),维度不匹配就会触发这个错误。

下面给你两种实用的解决办法:

方法1:快速修复维度问题(直接调整输入格式)

只需要把一维的Series转换成二维的DataFrame即可,用双重方括号[['Features']]就能实现(单括号返回Series,双括号返回DataFrame)。修改后的代码如下:

from imblearn.over_sampling import RandomOverSampler
from collections import Counter
import pandas as pd

# 你的示例数据构建
df = [
    ['I am going to class today']*10 + ['I am not going to class today']*4,
    ['Positive']*10 + ['Negative']*4
]
df = pd.DataFrame(df).transpose()
df.columns=['Features','Class']

# 修正后的过采样代码
oversample = RandomOverSampler(sampling_strategy='minority')
# 用df[['Features']]代替df['Features'],得到二维结构
X_over, y_over = oversample.fit_resample(df[['Features']], df['Class'])

# 验证结果
print(Counter(y_over))
# 输出应该是 Counter({'Positive': 10, 'Negative': 10})

方法2:符合文本分类流程的规范做法

实际文本分类任务中,原始字符串无法直接用于建模,必须先转换成数值型的二维特征矩阵(比如TF-IDF、词袋特征)。因此更合理的流程是先做文本特征提取,再执行过采样,这样既解决了维度问题,也为后续建模做好准备:

from imblearn.over_sampling import RandomOverSampler
from collections import Counter
import pandas as pd
from sklearn.feature_extraction.text import TfidfVectorizer

# 示例数据构建(同上)
df = [
    ['I am going to class today']*10 + ['I am not going to class today']*4,
    ['Positive']*10 + ['Negative']*4
]
df = pd.DataFrame(df).transpose()
df.columns=['Features','Class']

# 第一步:将文本转换为TF-IDF特征(得到二维稀疏矩阵)
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(df['Features'])
y = df['Class']

# 第二步:执行过采样
oversample = RandomOverSampler(sampling_strategy='minority')
X_over, y_over = oversample.fit_resample(X, y)

# 验证结果
print(Counter(y_over))
# 后续可以直接用X_over和y_over训练分类模型

如果只是临时解决当前的报错,方法1足够;但如果是完整的文本分类项目,更推荐方法2,它更贴合实际建模流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 20:37:45