Python implémente l'algorithme génétique GA pour optimiser le combat réel du projet de modèle de classification Catboost (algorithme CatBoostClassifier)

Explication : Il s'agit d'un projet pratique d'apprentissage automatique (avec données + code + documentation + explication vidéo ). Si vous avez besoin de données + code + documentation + explication vidéo, vous pouvez aller directement à la fin de l'article pour l'obtenir.




1. Contexte du projet

L'algorithme génétique (GA) a été proposé pour la première fois par John Holland aux États-Unis dans les années 1970. Cet algorithme est conçu et proposé selon la loi d'évolution des organismes dans la nature. C'est un modèle de calcul du processus d'évolution biologique qui simule la sélection naturelle et le mécanisme génétique de la théorie de l'évolution biologique de Darwin, et c'est une méthode pour rechercher la solution optimale en simulant le processus d'évolution naturelle. L'algorithme convertit le processus de résolution du problème en un processus similaire au croisement et à la mutation des gènes chromosomiques dans l'évolution biologique au moyen d'opérations mathématiques et de simulation informatique. Lors de la résolution de problèmes d'optimisation combinatoire plus complexes, par rapport à certains algorithmes d'optimisation conventionnels, généralement de meilleurs résultats d'optimisation peuvent être obtenus plus rapidement. L'algorithme génétique a été largement utilisé dans l'optimisation combinatoire, l'apprentissage automatique, le traitement du signal, le contrôle adaptatif et la vie artificielle et d'autres domaines.

Ce projet optimise le modèle de classification Catboost grâce à l'algorithme génétique GA.

2. Acquisition de données

Les données de modélisation pour cette période proviennent d'Internet (compilées par l'auteur de ce projet), et les statistiques des éléments de données sont les suivantes :

Le détail des données est le suivant (affichage partiel) : 

3. Prétraitement des données

3.1 Afficher les données avec les outils Pandas

Utilisez la méthode head() de l'outil Pandas pour afficher les cinq premières lignes de données :

 

code clé: 

3.2 Vérifier les données manquantes

Utilisez la méthode info() de l'outil Pandas pour afficher les informations sur les données :

Comme on peut le voir sur la figure ci-dessus, il y a un total de 9 variables, aucune valeur manquante dans les données et un total de 1000 données.

code clé:

 

3.3 Statistiques descriptives des données

Utilisez la méthode describe() de l'outil Pandas pour afficher la moyenne, l'écart type, le minimum, le quantile et le maximum des données.

Le code clé est le suivant :

 

4. Analyse exploratoire des données

4.1 y histogramme variable

Utilisez la méthode plot() de l'outil Matplotlib pour dessiner un histogramme :

4.2 y=1 échantillon x1 histogramme de distribution variable

Utilisez la méthode hist() de l'outil Matplotlib pour dessiner un histogramme :

4.3 Analyse de corrélation

 

Comme le montre la figure ci-dessus, plus la valeur est élevée, plus la corrélation est forte. Une valeur positive est une corrélation positive et une valeur négative est une corrélation négative.

5. Ingénierie des fonctionnalités

5.1 Établir les données d'entité et les données d'étiquette

Le code clé est le suivant :

5.2 Fractionnement du jeu de données

Utilisez la méthode train_test_split() pour diviser en 80 % d'ensemble d'apprentissage et 20 % d'ensemble de test. Le code clé est le suivant :

6. Construire un algorithme génétique GA pour optimiser le modèle de classification CATBOOST

Utilisez principalement l'algorithme génétique GA pour optimiser l'algorithme de classification CATBOOST pour la classification des objets.

6.1 Algorithme génétique GA pour trouver la valeur optimale du paramètre   

Paramètres optimaux :

6.2 Modèle de construction de la valeur optimale des paramètres

 

7. Évaluation du modèle

7.1 Indicateurs et résultats de l'évaluation

Les indicateurs d'évaluation comprennent principalement le taux d'exactitude, le taux de précision, le taux de rappel, le score F1, etc.

 

On peut voir dans le tableau ci-dessus que le score F1 est de 0,8315, indiquant que le modèle a un meilleur effet.

Le code clé est le suivant : 

 7.2 Rapport de classement

 

Comme on peut le voir sur la figure ci-dessus, le score F1 de la classification 0 est de 0,86 ; le score F1 de la classification 1 est de 0,83.

7.3 Matrice de confusion

 

Comme on peut le voir sur la figure ci-dessus, il y a 12 échantillons qui sont en fait 0 et dont on prédit qu'ils ne sont pas 0 ; il y a 18 échantillons qui sont en fait 1 et dont on prédit qu'ils ne sont pas 1, et la précision globale de la prédiction est bonne.

8. Conclusion et perspectives

En résumé, cet article utilise l'algorithme génétique GA pour trouver la valeur de paramètre optimale de l'algorithme CATBOOST pour construire un modèle de classification, et prouve finalement que le modèle que nous avons proposé fonctionne bien. Ce modèle peut être utilisé pour la prévision des produits courants.

# 初始化种群、初始解
Sol = np.zeros((N_pop, d))  # 初始化位置
Fitness = np.zeros((N_pop, 1))  # 初始化适用度
for i in range(N_pop):  # 迭代种群
    Sol[i] = np.random.uniform(Lower_bound, Upper_bound, (1, d))  # 生成随机数
    Fitness[i] = objfun(Sol[i])  # 适用度
 
 
# ******************************************************************************
 
# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 链接:https://pan.baidu.com/s/1c6mQ_1YaDINFEttQymp2UQ
 
# 提取码:thgk
 
# ******************************************************************************
 

# y=1样本x1变量分布直方图
fig = plt.figure(figsize=(8, 5))  # 设置画布大小
plt.rcParams['font.sans-serif'] = 'SimHei'  # 设置中文显示
plt.rcParams['axes.unicode_minus'] = False  # 解决保存图像是负号'-'显示为方块的问题
data_tmp = df.loc[df['y'] == 1, 'x1']  # 过滤出y=1的样本
# 绘制直方图  bins:控制直方图中的区间个数 auto为自动填充个数  color:指定柱子的填充色
plt.hist(data_tmp, bins='auto', color='g')

  Pour plus de pratiques de projet, consultez la liste des collections de pratiques de projet d'apprentissage automatique :

Liste des collections de combat réelles de projets d'apprentissage automatique


Pour la consultation et l'acquisition de code de projet, veuillez consulter le compte officiel ci-dessous. 

Je suppose que tu aimes

Origine blog.csdn.net/weixin_42163563/article/details/132139110
conseillé
Classement