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