Python は GA 遺伝的アルゴリズムを実装してリカレント ニューラル ネットワーク回帰モデル (LSTM 回帰アルゴリズム) プロジェクトの戦闘を最適化します

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




1.プロジェクトの背景

遺伝的アルゴリズム(GA)は、1970年代に米国のジョン・ホランドによって初めて提案された、自然界の生物の進化の法則に基づいて設計・提案されたアルゴリズムです。ダーウィンの生物進化理論の自然選択と遺伝メカニズムを模擬した生物進化過程の計算モデルであり、自然進化過程を模擬して最適解を探索する手法です。このアルゴリズムは、問題の解決プロセスを、数学とコンピュータシミュレーション操作によって、生物進化における染色体遺伝子の交叉や突然変異と同様のプロセスに変換します。より複雑な組み合わせ最適化問題を解く場合、従来の最適化アルゴリズムと比較して、通常はより良い最適化結果をより速く得ることができます。遺伝的アルゴリズムは、組み合わせ最適化、機械学習、信号処理、適応制御、人工生命などの分野で広く使用されています。

このプロジェクトは、GA 遺伝的アルゴリズムを通じてリカレント ニューラル ネットワーク回帰モデルを最適化します。

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. LSTM 回帰モデルを最適化するための GA 遺伝的アルゴリズムを構築する

主に GA 遺伝的アルゴリズムを使用して、ターゲット回帰の LSTM 回帰アルゴリズムを最適化します。

6.1 最適なパラメータ値を見つけるための GA 遺伝的アルゴリズム   

最適なパラメータ値:

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

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

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

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

7. モデルの評価

7.1 評価指標と結果

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

上の表から、R 二乗が 0.9898 であることがわかります。これは、モデルがうまく機能していることを意味します。

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

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

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

8.結論と展望

要約すると、この論文は、GA 遺伝的アルゴリズムを使用してリカレント ニューラル ネットワークの LSTM アルゴリズムの最適なパラメーター値を見つけて回帰モデルを構築し、最終的に提案したモデルがうまく機能することを証明します。このモデルは、日常の製品の予測に使用できます。

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

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

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


おすすめ

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