我正在使用pandas.read_csv()
将两列.csv文件读入Pandas数据框。 Dataframe的负责人如下所示:
Year cleaned
0 1909 acquaint hous receiv follow letter clerk crown...
1 1909 ask secretari state war whether issu statement...
2 1909 i beg present petit sign upward motor car driv...
3 1909 i desir ask secretari state war second lieuten...
4 1909 ask secretari state war whether would introduc...
在此之后,我调用df.dropna(inplace=True)
(感谢Brad Solomon)以允许即将到来的适合/转换调用继续进行,而不会产生' MemoryError'如我之前的问题here所示。
既然我有一个对内存友好的Dataframe形式,我使用SKLearn' train_test_split()
创建了四组数据,我打算用它来拟合/转换为Pipeline。
X_train, X_test, y_train, y_test = train_test_split(df, df['Year'], test_size=0.25)
这些变量的形状为:
[IN] X_train.shape [OUT] (1785, 2)
[IN] X_test.shape [OUT] (595, 2)
[IN] y_train.shape [OUT] (1785,)
[IN] y_test.shape [OUT] (595,)
因此,我将我的数据分成适当的子部分进行测试和培训。然后我创建了我的管道,它使用了TfidfVectorizer
,SelectKBest
和LinearSVC
,如下所示:
pipeline = Pipeline(
[('vectorizer', TfidfVectorizer(decode_error='replace', encoding='utf-8', stop_words='english', ngram_range=(1,2), sublinear_tf=True)),
('chi2', SelectKBest(chi2, k=1000)),
('classifier', LinearSVC(C=1.0, penalty='l1', max_iter=3000, dual=False))
])
最后,当我尝试在前面提到的X和y训练数据上调用fit_transform()
时,我们遇到了标题中提到的错误
model = pipeline.fit_transform(X_train, y_train)
......反过来会产生错误:
ValueError: Found input variables with inconsistent numbers of samples: [2, 1785]
可以查看完整的回溯here。
答案 0 :(得分:0)
inconsistent numbers of samples: [2, 1785]
似乎表明行和列已在管道中翻转。
尝试:
pipeline.fit_transform(X_train.T,
y_train.reshape((1785, 1)))
可能需要reshape
y_train
查看this similar question并牢记在使用前需要对test_X
和test_y
应用相同的转换。< / p>