Python は SSA インテリジェント スズメ検索アルゴリズムを実装し、畳み込みニューラル ネットワーク回帰モデル (CNN 回帰アルゴリズム) プロジェクトの戦闘を最適化します。

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




1. プロジェクトの背景

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

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

このプロジェクトは、SSA インテリジェント スズメ検索アルゴリズムを通じて畳み込みニューラル ネットワーク回帰モデルを最適化します。

2. データ取得

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

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

3. データの前処理

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

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

キーコード:

3.2 欠落データの確認

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

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

キーコード:

3.3 データ記述統計

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

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

4. 探索的データ分析

4.1 y 変数のヒストグラム

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

 上の図からわかるように、y 変数は主に -400 ~ 400 の間に集中しています。

4.2 相関分析

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

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

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

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

 

5.2 データセットの分割

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

5.3 データサンプルの次元の増加

ディメンションを追加した後のデータ サンプルのデータ形状:

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

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

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

最適なパラメータ:

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

 

6.3 最適パラメータモデルの概要情報

 

6.4 最適パラメータモデルのネットワーク構造 

 

6.5 最適パラメータモデルトレーニングセットテストセット損失曲線 

 

7. モデルの評価

7.1 評価指標と結果

評価指標には主に説明可能な分散値、平均絶対誤差、平均二乗誤差、R二乗値などが含まれます。

 

上の表から、R 二乗は 0.9349 であり、適切なモデルであることがわかります。

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

7.2 実測値と予測値の比較表 

上図から、実際の値と予測値の変動は基本的に同じであり、モデル フィッティング効果が良好であることがわかります。

8. 結論と展望

要約すると、この論文は、SSA インテリジェント スズメ検索アルゴリズムを使用して、畳み込みニューラル ネットワーク (CNN) アルゴリズムの最適なパラメーター値を見つけて回帰モデルを構築し、最終的に提案したモデルがうまく機能することを証明します。このモデルは、日常の製品の予測に使用できます。

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

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

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


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

おすすめ

転載: blog.csdn.net/weixin_42163563/article/details/132420131
おすすめ