Scikit Learn ValueError: 发现维度为3的数组。估计器期望的维度应小于或等于2

我有一个包含144条学生反馈的数据集,其中有72条正面反馈和72条负面反馈。数据集有两个属性,即data和target,分别包含句子和情感(正面或负面)。测试数据集包含106条未标记的反馈。请考虑以下代码:

我不知道哪里出了问题。请帮助我。


回答:

您得到的错误与样本数量无关,而是与特征数量有关,错误来自于以下代码行:

cv = CountVectorizer(binary = True)ct = CountVectorizer(binary= True)cv.fit(feedback_data['data'].values)ct.fit(feedback_data_test['data'].values)

您需要以相同的方式对测试和训练数据进行编码

您需要对所有数据拟合Count Vectorizer,然后将其应用于测试和训练数据。如果不这样做,您将无法获得相同的词汇表,因此编码也会不同。

cv = CountVectorizer(binary = True)cv.fit(np.concatenate((feedback_data['data'].values,feedback_data_test['data'].values))

编辑

您只需使用cv,不需要使用ct

X = feedback_data['data'].apply(lambda X : cv.transform([X])).valuesX = list([list(x.toarray()[0]) for x in X])X_test = feedback_data_test['data'].apply(lambda X_test :cv.transform([X_test])).valuesX_test = list([list(x.toarray()[0]) for x in X_test])

Related Posts

在tf-idf中,文档和语料库是什么?

tf-idf = 词频 * 逆文档频率 词频被定义为一…

我刚完成了fast.ai课程,关于如何在Colab上运行这个机器学习项目有什么建议吗?

我是机器学习的新手,但我具备基本的编程知识。 我刚完成…

Keras准确性与实际准确性完全相反

我正在学习神经网络,目前使用Keras库在CFAR-1…

不平衡面板数据:如何使用时间序列分割交叉验证?

我目前正在处理一个大型的不平衡数据集,我想知道是否可以…

如何在线性回归中使用X和Y变量?

我正在尝试使用简单线性回归来预测某物品的成本。作为输入…

线性回归 – 实现特征缩放

我在Octave 5.1.0上尝试对一组数据进行线性回…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注