説明: これは機械学習の実践プロジェクトです (データ + コード + ドキュメント + ビデオ説明) データ + コード + ドキュメント + ビデオ説明が必要な場合は、記事の最後に直接アクセスして入手できます。
1.プロジェクトの背景
遺伝的アルゴリズム(GA)は、1970年代に米国のジョン・ホランドによって初めて提案された、自然界の生物の進化の法則に基づいて設計・提案されたアルゴリズムです。ダーウィンの生物進化理論の自然選択と遺伝メカニズムを模擬した生物進化過程の計算モデルであり、自然進化過程を模擬して最適解を探索する手法です。このアルゴリズムは、問題の解決プロセスを、数学とコンピュータシミュレーション操作によって、生物進化における染色体遺伝子の交叉や突然変異と同様のプロセスに変換します。より複雑な組み合わせ最適化問題を解く場合、従来の最適化アルゴリズムと比較して、通常はより良い最適化結果をより速く得ることができます。遺伝的アルゴリズムは、組み合わせ最適化、機械学習、信号処理、適応制御、人工生命などの分野で広く使用されています。
このプロジェクトは、GA 遺伝的アルゴリズムを通じて BP ニューラル ネットワーク回帰モデルを最適化します。
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% のテスト セットに従って分割します。キー コードは次のとおりです。
6. BP ニューラル ネットワーク回帰モデルを最適化する GA 遺伝的アルゴリズムを構築する
GA 遺伝的アルゴリズムは主に、ターゲット回帰の BP ニューラル ネットワーク回帰アルゴリズムを最適化するために使用されます。
6.1 最適なパラメータ値を見つけるための GA 遺伝的アルゴリズム
最適なパラメータ値:
6.2 最適パラメータ値構築モデル
6.3 最適パラメータモデルの概要情報
6.4 最適パラメータモデルのネットワーク構造
6.5 最適パラメータモデルトレーニングセットテストセット損失曲線
7. モデルの評価
7.1 評価指標と結果
評価指標には主に説明可能な分散値、平均絶対誤差、平均二乗誤差、R二乗値などが含まれます。
上の表から、R 二乗が 0.9984 であることがわかります。これは、モデルがうまく機能していることを意味します。
キーコードは次のとおりです。
7.2 実際の値と予測値の比較表
上図から、実際の値と予測値の変動は基本的に同じであり、モデル フィッティング効果が良好であることがわかります。
8.結論と展望
要約すると、この論文は、GA 遺伝的アルゴリズムを使用して BP ニューラル ネットワーク アルゴリズムの最適なパラメーター値を見つけて回帰モデルを構築し、最終的に提案したモデルがうまく機能することを証明します。このモデルは、日常の製品の予測に使用できます。
# 初始化种群、初始解
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')
プロジェクトの実践の詳細については、機械学習プロジェクトの実践コレクションのリストを参照してください。