Wie verwende ich RFECV für die Feature-Auswahl in einer Scikit-Learn-Pipeline mit einem einfachen Entscheidungsbaum richPython

Python-Programme
Anonymous
 Wie verwende ich RFECV für die Feature-Auswahl in einer Scikit-Learn-Pipeline mit einem einfachen Entscheidungsbaum rich

Post by Anonymous »

Ich arbeite am Kaggle House Price Price Prediction-Wettbewerb und habe eine Scikit-Learn-Pipeline gebaut, die: < /p>
Vorverarbeitung (Handhabung fehlender Werte, Skalierung, Codierung) < /p> < /> Feature Engineering < /p>

Code: Select all

# Full pipeline
full_pipeline = Pipeline([
('preprocessor', preprocessor),  # Preprocessing pipeline
('feature_engineering', feature_engineer), # Feature engineering pipeline
('encoder', encoding_pipeline),  # Encoding pipeline
])

< /code>
Ich habe diese Pipeline mit einem Entscheidungsbaum-Basismodell mit einer 5-fachen Kreuzvalidierung getestet, um Datenlecks zu verhindern: < /p>
# Create DecisionTreeRegressor model
decision_tree = DecisionTreeRegressor(random_state=42)

# Create baseline decision tree pipeline
baseline_decision_tree_pipeline = Pipeline([
('preprocessing', full_pipeline),
('decision_tree', decision_tree)
])

# Define CV strategy
kf = KFold(n_splits=5, shuffle=True, random_state=42)

# Get CV RMSE scores
cv_scores = cross_val_score(baseline_decision_tree_pipeline,
X,  # Raw unprocessed data
y,  # Target
cv=kf,
scoring='neg_root_mean_squared_error',
n_jobs=-1)

print("CV RMSE scores:", -cv_scores)
print("Average CV RMSE:", (-cv_scores).mean())
< /code>
Ich möchte jetzt RFECV (rekursive Merkmalsimination mit Kreuzvalidierung) integrieren, um die besten Funktionen auszuwählen und gleichzeitig die Datenverletzung vor Verarbeitungsschritten wie die Imputation zu verhindern. Ich bin mir jedoch nicht sicher, ob der beste Ansatz:
[b] Option 1: RFECV innerhalb der Kreuzvalidationsschleife [/b] 
Wenn ich RFECV-RFECV-RFECV-RFECV-RFECV in der Pipeline verwende, dann für jedes der 5-fachlichen Aussagen. Falten? />   Fragen < /strong> < /p>

  Ist es richtig, RFECV in die Pipeline einzubeziehen? Dies stellt sicher, dass die Feature -Auswahl in jeder Falte erfolgt, aber wie extrahiere ich den endgültigen Satz optimaler Funktionen? Ich habe ein paar verschiedene Dinge versucht, kann aber nicht das bekommen, was ich suche. Bewertungen: < /li>
< /ul>
# Perform Recursive Feature Elimination with Cross-Validation
selector = RFECV(estimator=decision_tree, step=1, cv=kf, scoring="neg_root_mean_squared_error")

# Create baseline decision tree pipeline with feature selection
dt_pipeline = Pipeline([
('preprocessing', full_pipeline),
('feature_selection', selector),
('decision_tree', decision_tree)
])

cv_scores_rfecv = cross_val_score(
dt_pipeline,
X,  # Raw unprocessed data
y,  # Target
cv=kf,
scoring='neg_root_mean_squared_error',
n_jobs=-1
)

print("CV RMSE scores:", -cv_scores_rfecv)
print("Average CV RMSE:", (-cv_scores_rfecv).mean())

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post