Scikit学习ValueError:找到的数组具有暗3。估计器预期值<= 2

时间:2019-02-25 17:18:19

标签: machine-learning sentiment-analysis

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

-- Adding data to the Health Data Baseline table

INSERT INTO Health_Data_Baseline (
    Total_Sleep_Duration_Baseline
    ,Body_Weight_Baseline
    ,Body_Mass_Index_Baseline
    ,Body_Fat_Percentage_Baseline
    ,Step_Count_Baseline
    ,Flights_Climbed_Baseline
    ,Health_Data.Person_Device_ID)
SELECT 
    AVG(Total_Sleep_Duration) -- as "Average Minutes of Sleep Per Night"
    ,AVG(Body_Weight) -- as "Average Weight in Pounds"
    ,AVG(Body_Mass_Index) -- as "Average Body Mass Index"
    ,AVG(Body_Fat_Percentage) -- as "Average Body Fat %"
    ,AVG(Step_Count) -- as "Average Step Count"
    ,AVG(Flights_Climbed) -- as "Average Flights Climbed"
    ,Health_Data.Person_Device_ID
FROM Health_Data 
JOIN Person_Device ON Person_Device.Person_Device_ID = Health_Data.Person_Device_ID
GROUP BY Health_Data.Person_Device_ID

我不知道怎么了。请帮忙。

1 个答案:

答案 0 :(得分:0)

您得到的错误与样本数无关,而与功能数有关,这是由这些代码行引起的:

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))

编辑

您只是不使用ct,而仅使用cv

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