Python は SSA インテリジェント スズメ検索アルゴリズムを実装し、Catboost 分類モデル (CatBoostClassifier アルゴリズム) プロジェクトの実戦を最適化します。

説明: これは機械学習の実践プロジェクトです (データ + コード + ドキュメント + ビデオ説明)データ + コード + ドキュメント + ビデオ説明が必要な場合は、記事の最後に直接アクセスして入手できます。




1. プロジェクトの背景

スズメ検索アルゴリズム (SSA) は、2020 年に提案された新しいタイプの群れ知能最適化アルゴリズムで、主にスズメの採餌行動と対捕食行動にヒントを得ています。

スズメの採餌の過程では発見者(探索者)と参加者(追随者)に分かれ、発見者は餌を取りに来ます。食物を得るために、スズメは通常、探索者とジョイナーという 2 つの行動戦略を採用して採餌することができます。集団内の個体は集団内の他の個体の行動を監視しており、集団内の攻撃者は捕食率を高めるために高摂取量の仲間と食料資源を奪い合います。さらに、スズメの個体群は危険を察知すると、反捕食行動をとります。

このプロジェクトは、SSA インテリジェント スズメ検索アルゴリズムを通じて CATBOOST 分類モデルを最適化します。

2. データ取得

今回のモデリングデータはインターネットから取得したもの(このプロジェクトの作成者が作成)、データ項目の統計は次のとおりです。

データ詳細は以下の通りです(一部表示)。

 

3. データの前処理

3.1 Pandas ツールを使用してデータを表示する

Pandas ツールの head() メソッドを使用して、データの最初の 5 行を表示します。

キーコード:

 

3.2 欠落データの確認

データ情報を表示するには、Pandas ツールの info() メソッドを使用します。

上図からわかるように、変数は合計11個あり、データには欠損値がなく、合計1000個のデータがあります。

キーコード:

3.3 データ記述統計

Pandas ツールの description() メソッドを使用して、データの平均、標準偏差、最小値、分位数、および最大値を表示します。

 キーコードは次のとおりです。

4. 探索的データ分析

4.1 y 変数ヒストグラム

Matplotlib ツールの Lot() メソッドを使用して、ヒストグラムを描画します。

 

4.2 y=1 サンプル x1 変数分布ヒストグラム

Matplotlib ツールの hist() メソッドを使用して、ヒストグラムを描画します。

 

4.3 相関分析 

 

上図からわかるように、値が大きいほど相関が強いことを示しており、正の値は正の相関、負の値は負の相関を示します。

5. 特徴量エンジニアリング

5.1 特徴データとラベルデータの確立

キーコードは次のとおりです。

 

5.2 データセットの分割

train_test_split() メソッドを使用して、80% のトレーニング セットと 20% のテスト セットに従って分割します。キー コードは次のとおりです。

 

6. SSA インテリジェント スズメ検索アルゴリズムを構築して CATBOOST 分類モデルを最適化する

主に SSA インテリジェント スズメ検索アルゴリズムを使用して、ターゲット分類のための CATBOOST 分類アルゴリズムを最適化します。

6.1 最適なパラメータ値を見つけるための SSA インテリジェント スズメ検索アルゴリズム   

最適なパラメータ:

 6.2 最適パラメータ値構築モデル

 

7. モデルの評価

7.1 評価指標と結果

評価指標としては主に正答率、適合率、再現率、F1スコアなどが挙げられます。

 

 上の表から、F1 スコアが 0.9158 であることがわかり、モデルがうまく機能していることがわかります。

キーコードは次のとおりです。  

7.2 分類レポート

上の図からわかるように、分類 0 の F1 スコアは 0.92、分類 1 の F1 スコアは 0.92 です。

7.3 混同行列

 

上の図からわかるように、実際には 0 であるが 0 ではないと予測されるサンプルが 10 個あり、実際には 1 ではなく 1 であると予測されるサンプルが 6 個あり、全体的な予測精度は良好です。

8. 結論と展望

要約すると、この論文は、SSA インテリジェント スズメ検索アルゴリズムを使用して、CATBOOST アルゴリズムの最適なパラメーター値を見つけて分類モデルを構築し、最終的に提案したモデルが適切に機能することを証明します。このモデルは、日常の製品の予測に使用できます。

# 定义边界函数
def Bounds(s, Lb, Ub):
    temp = s
    for i in range(len(s)):
        if temp[i] < Lb[0, i]:  # 小于最小值
            temp[i] = Lb[0, i]  # 取最小值
        elif temp[i] > Ub[0, i]:  # 大于最大值
            temp[i] = Ub[0, 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 = data.loc[data['y'] == 1, 'x1']  # 过滤出y=1的样本
# 绘制直方图  bins:控制直方图中的区间个数 auto为自动填充个数  color:指定柱子的填充色
plt.hist(data_tmp, bins='auto', color='g')

プロジェクトの実践の詳細については、機械学習プロジェクトの実践コレクションのリストを参照してください。

機械学習プロジェクトの実戦集一覧


プロジェクトコードの相談・取得については下記公式アカウントをご覧ください。 

おすすめ

転載: blog.csdn.net/weixin_42163563/article/details/132422825