我有一个包含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])