对流水线中的同一个估计器使用不同的特征
Using different features for the same estimator in the pipeline
我有一个很好的管道,可以执行以下操作:
pipeline = Pipeline([
("first transformer", ct),
("second transformer", OHE),
('standard_scaler', MinMaxScaler()),
("logistic regression", estimator)
])
估算器部分是这样的:
estimator = MultiOutputClassifier(
estimator = LogisticRegression(penalty="l2", C=2)
)
Label DataFrame 的形状为 (1000, 2),到目前为止一切正常。
为了调整模型,我现在尝试添加 SelectKBest 以限制用于计算的特征。不幸的是,将此代码添加到管道中:
('feature_selection', SelectKBest(score_func=f_regression, k=9))
returns 这个错误:
ValueError: y should be a 1d array, got an array of shape (20030, 2) instead.
我了解它的来源,并且仅使用一个标签 (1000, 1) 即可解决问题,但这意味着我需要为每个标签创建两个单独的管道。
是否有任何方法可以在此管道中包含特征选择而不诉诸于此?
由于您希望(可能)为每个输出使用不同的特征子集,您应该将 SelectKBest
放入管道中,其中 LogisticRegression
位于 MultiOutputClassifier
.
clf = Pipeline([
("feature_selection", SelectKBest(score_func=f_regression, k=9)),
("logistic regression", LogisticRegression(penalty="l2", C=2)),
])
estimator = MultiOutputClassifier(clf)
pipeline = Pipeline([
("first transformer", ct),
("second transformer", OHE),
('standard_scaler', MinMaxScaler()),
("select_and_model", estimator),
])
我有一个很好的管道,可以执行以下操作:
pipeline = Pipeline([
("first transformer", ct),
("second transformer", OHE),
('standard_scaler', MinMaxScaler()),
("logistic regression", estimator)
])
估算器部分是这样的:
estimator = MultiOutputClassifier(
estimator = LogisticRegression(penalty="l2", C=2)
)
Label DataFrame 的形状为 (1000, 2),到目前为止一切正常。
为了调整模型,我现在尝试添加 SelectKBest 以限制用于计算的特征。不幸的是,将此代码添加到管道中:
('feature_selection', SelectKBest(score_func=f_regression, k=9))
returns 这个错误:
ValueError: y should be a 1d array, got an array of shape (20030, 2) instead.
我了解它的来源,并且仅使用一个标签 (1000, 1) 即可解决问题,但这意味着我需要为每个标签创建两个单独的管道。
是否有任何方法可以在此管道中包含特征选择而不诉诸于此?
由于您希望(可能)为每个输出使用不同的特征子集,您应该将 SelectKBest
放入管道中,其中 LogisticRegression
位于 MultiOutputClassifier
.
clf = Pipeline([
("feature_selection", SelectKBest(score_func=f_regression, k=9)),
("logistic regression", LogisticRegression(penalty="l2", C=2)),
])
estimator = MultiOutputClassifier(clf)
pipeline = Pipeline([
("first transformer", ct),
("second transformer", OHE),
('standard_scaler', MinMaxScaler()),
("select_and_model", estimator),
])