Überanpassung in den Zugdaten für einen Kunden -AbwanderungsdatensatzPython

Python-Programme
Anonymous
 Überanpassung in den Zugdaten für einen Kunden -Abwanderungsdatensatz

Post by Anonymous »

Ich lerne ein grundlegendes maschinelles Lernen für Klassifizierungszwecke. Ich habe ein logistisches Regressionsmodell auf einem Kundenbahnen-Datensatz von Kaggle (https://www.kaggle.com/datasets/Muhamma ... mer-churn-) trainiert. Ich habe jedoch einen schweren Fall von Überanpassung: < /p>
Zuggenauigkeit: 0,94 < /p>
Testgenauigkeit: 0,57 < /p>
Dies zeigt an, dass mein Modell schlecht verallgemeinert wird. Zusätzlich habe ich eine Hyperparameter-Abstimmung mit geschichteten k-fachen Kreuzvalidierung verwendet, um die Modellparameter zu optimieren.Train_data = 'customer-churn-dataset-training-master.csv'
Test_data = 'customer-churn-dataset-testing-master.csv'
< /code>
Pipeline -Setup < /p>
ordinal_encoded_features = ['Subscription Type', 'Contract Length']
label_encoded_features = ['Gender']

ordinal_cat = [
['Basic', 'Standard', 'Premium'],
['Monthly', 'Quarterly', 'Annual']
]

preprocessor = ColumnTransformer([
('onehot', OneHotEncoder(handle_unknown='ignore', drop='first'), label_encoded_features),
('ordinal', OrdinalEncoder(categories=ordinal_cat, handle_unknown='use_encoded_value', unknown_value=-1),
ordinal_encoded_features)
], remainder='passthrough')

Log_pipeline = {
'Logistic Regression': Pipeline([
('preprocessor', preprocessor),
('scaler', MinMaxScaler()),
('classifier', LogisticRegression(random_state=42))
])
}
< /code>
Hyperparameter-Tuning mit geschichteten k-fach < /p>
param_grid = {
'Logistic Regression': {
'classifier__C': [0.1, 1, 5, 10, 15, 20],
'classifier__penalty': ['l1', 'l2'],
'classifier__solver': ['liblinear', 'saga'],
'classifier__class_weight': [None, 'balanced']
}
}

kf = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
log_model = {}
best_score = {}

for name, pipe in Log_pipeline.items():
Random_search = RandomizedSearchCV(pipe, param_grid[name], cv=kf, scoring='f1', n_jobs=-1,
random_state=42, n_iter=20)
Random_search.fit(x_train, y_train)

log_model[name] = Random_search.best_estimator_
best_score[name] = Random_search.best_score_
< /code>
Was ich ausprobiert habe: < /p>
Verwendete MinmaxScaler für Feature-Skalierung. Genauigkeit. Gibt es Verbesserungen, die ich vornehmen kann, um die Generalisierungsleistung zu verbessern?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post