Formation à trois modèles de la série Insight Trend (modèle de base)

Avant de commencer la formation du modèle de base, la normalisation des données est également requise.
La standardisation des données est la suivante: après que les données sont centrées par la valeur minimale, puis mises à l'échelle par la plage (maximum-minimum), les données seront convergées entre [0,1], le but est de transformer la taille de l'entité en une style.
Utilisez MinMaxScaler de sklearn.preprocessing pour réaliser cette fonction

1. Normalisation des données

form sklearn.preprocessing import MinMaxScaler
labels_train=df_train['TARGET']
feature_train=df_train.drop(['TARGET'],axis=1)
feature_names=feature_train.columns
# 归一化
scaler=MinMaxScaler()
scaler.fit(feature_train)
feature_train=scaler.transform(feature_train)
feature_test=scaler.transform(df_test)

Modèle de régression logistique

Tout d'abord, utilisez LogisticRegression de sklearn comme premier modèle, utilisez la régularité L2 et un coefficient de pénalité de C (utilisé pour contrôler le degré d'ajustement, plus il est grand, meilleur est le contrôle)

from sklearn.linear_model import LogisticRegression
# 创建Logistic回归模型,设置惩罚项系数C为1.0
lr=LogisticRegression(penalty='l2',C=1.0,class_weight='balanced')
lr.fit(feature_train,labels_train)
# 使用predict_proba做模型预测,预测出来是0-1的取值,可以看做是概率,结果去第二列即可。
lr_pred=lr.predict_proba(feature_test)[:,1]
lr_pred

Une fois que vous avez le résultat de la prévision, soumettez-le d'abord et créez d'abord le résultat de la soumission.

submit=df_test[['SK_ID_CURR']]
submit['TARGET']=lr_pred

Enregistrez le résultat de la soumission sous forme de fichier CSV

submit.to_csv('lr_baseline.csv',index=False)

3. forêt aléatoire

Utilisez ensuite d'autres modèles d'apprentissage automatique, tels que le modèle Random Forest, et essayez de voir s'il fonctionnera mieux sur le même ensemble de données.

from sklearn.ensemble import RandomForestClassifier
rf=RandomForestClassifier(
	n_estimators=100,
	criterion='entropy',
	max_depth=8,
	min_samples_leaf=50,
	max_leaf_nodes=200,
	bootstrap=True,
	n_jobs=1,
	random_state=0,
	max_samples=0.8,
	class_weight='balanced',
)
rf.fit(feature_train,labels_train)
rf_pred=rf.predict_proba(feature_test)[:,1]
rf_pred

Créer un format de résultat de soumission

submit=df_test[['SK_ID_CURR']]
submit['TARGET']=rf_pred

Enregistrez le fichier de résultats de la soumission

submit.to_csv('rf_Baseline.csv',index=False)

4. Modèle LightGBM

import lightgbm as lgb
params={
    
    
	'bootsint_type':'gbdt',
	'objective':'binary',
	'n_estimators':100,
	'learning':0.01,
	'max_depth':6,
	'num_leaves':50,
	'subsample':0.8,
	'colsample_bytree':0.8,
	'subsample_freq':10,
	'reg_alpha':0.1,
	'reg_lambda':0.1,
	'is_unbalance':True,
}
model=lgb.LGBMClassifier(**params,random_state=0)
model.fit(feature_train,labels_train)
lgb_pred=model.predict_proba(feature_test)[:,1]

Créer un fichier de résultats de soumission

submit=df_test[['SK_ID_CURR']]
submit['TARGET']=lgb_pred

Enregistrez le fichier de résultats de la soumission

submit.to_csv('lgb_baseline.csv',index=False)

5. Tester l'efficacité des nouvelles fonctionnalités

5.1 Tester la validité des caractéristiques polynomiales

Vérifiez si les fonctionnalités polynomiales et les fonctionnalités de connaissance du domaine sont utiles pour le modèle, ajoutez-les à l'ensemble de données, obtenez les résultats de prédiction réels et comparez-les en fonction des scores soumis.
Commencez par normaliser les données

scaler=MinMaxScaler()
scaler.fit(df_train_poly)
feats_train_poly=scaler.transform(df_train_poly)
feats_test_poly=scaler.transform(df_test_poly)

Utilisez lightgbm pour la vérification

params={
    
    
	'bootsint_type':'gbdt',
	'objective':'binary',
	'n_estimators':100,
	'learning':0.01,
	'max_depth':6,
	'num_leaves':50,
	'subsample':0.8,
	'colsample_bytree':0.8,
	'subsample_freq':10,
	'reg_alpha':0.1,
	'reg_lambda':0.1,
	'is_unbalance':True,
}
lgb_poly=lgb.LGBMClassifier(**params,random_state=0)
lgb_poly.fit(feats_train_poly,train_labels)
lgb_pred_poly=lgb_poly.predict_proba(feats_test_poly)[:,1]

Créer un format de résultat de soumission

submit=df_test[['SK_ID_CURR']]
submit['TARGET']=lgb_pred_poly

Enregistrez le fichier de résultats de la soumission

submit.to_csv('lgb_domain.csv',index=False)

Situation de score

  • Le score n'est que de 0,582, et les nouvelles fonctionnalités construites ont peu d'amélioration dans la prédiction du modèle lightgbm (face like ...)

5.3 Vérification des caractéristiques des connaissances du domaine

Normalisation des données

在这里插入代码片

5.4 Afficher l'importance des fonctionnalités

Une façon de connaître la validité des entités consiste à afficher l'attribut feature_importance_ du modèle d'arbre

feature_importance_values=model.feature_importance_

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42961082/article/details/113875328
conseillé
Classement