Machine learning Sklearn:找到样本数不一致的输入变量:

Machine learning Sklearn:找到样本数不一致的输入变量:,machine-learning,scikit-learn,Machine Learning,Scikit Learn,我已经建立了一个模型 est1_pre = ColumnTransformer([('catONEHOT', OneHotEncoder(dtype='int',handle_unknown='ignore'),['Var1'])],remainder='drop') est2_pre = ColumnTransformer([('BOW', TfidfVectorizer(ngram_range=(1, 3),max_features=1000),['Var2'])],remainder='d

我已经建立了一个模型

est1_pre = ColumnTransformer([('catONEHOT', OneHotEncoder(dtype='int',handle_unknown='ignore'),['Var1'])],remainder='drop')
est2_pre = ColumnTransformer([('BOW', TfidfVectorizer(ngram_range=(1, 3),max_features=1000),['Var2'])],remainder='drop')


    m1= Pipeline([('FeaturePreprocessing', est1_pre),
                              ('clf',alternative)])
    m2= Pipeline([('FeaturePreprocessing', est2_pre),
                              ('clf',alternative)])
    model_combo = StackingClassifier(
         estimators=[('cate',m1),('text',m2)],
         final_estimator=RandomForestClassifier(n_estimators=10,
                                               random_state=42)
     )
我可以使用
m1
m2
成功地进行拟合和预测。 但是,当我看到组合
model\u组合时
调用.fit/.predict的任何尝试都会导致
ValueError:找到样本数不一致的输入变量:

    model_fitted=model_combo.fit(x_train,y_train)
x_列车包含
Var1
Var2

如何适应
model\u组合?

问题在于sklearn文本预处理器(
TfidfVectorizer
在本例中)操作的是一维数据,而不是像大多数其他预处理器那样的二维数据。因此矢量器将其输入视为其列的一个iterable,因此只有一个“文档”。可在
ColumnTransformer
中通过在列表中指定要操作的列来解决此问题:

est2\u pre=ColumnTransformer([('BOW',tfidfvectorier(ngram\u范围=(1,3),max\u特性=1000),'Var2'),余数='drop')