説明: これは機械学習の実践プロジェクトです (データ + コード + ドキュメント + ビデオ説明)データ + コード + ドキュメント + ビデオ説明が必要な場合は、記事の最後に直接アクセスして入手できます。
1. プロジェクトの背景
スズメ検索アルゴリズム (SSA) は、2020 年に提案された新しいタイプの群れ知能最適化アルゴリズムであり、主にスズメの採餌行動と対捕食行動にヒントを得ています。
スズメの採餌の過程では発見者(探索者)と参加者(追随者)に分かれ、発見者は餌を取りに来ます。食物を得るために、スズメは通常、探索者と結合者という 2 つの行動戦略を採用して採餌することができます。集団内の個体は集団内の他の個体の行動を監視しており、集団内の攻撃者は捕食率を高めるために高摂取量の仲間と食料資源を奪い合います。さらに、スズメの個体群は危険を察知すると、反捕食行動をとります。
このプロジェクトは、SSA スパロー検索アルゴリズムを通じて LightGBM 回帰モデルを最適化します。
2. データ取得
今回のモデリングデータはインターネットから取得したもの(このプロジェクトの作成者が作成)、データ項目の統計は次のとおりです。
データ詳細は以下の通りです(一部表示)。
3. データの前処理
3.1 Pandas ツールを使用してデータを表示する
Pandas ツールの head() メソッドを使用して、データの最初の 5 行を表示します。
キーコード:
3.2 欠落データの確認
データ情報を表示するには、Pandas ツールの info() メソッドを使用します。
上図からわかるように、変数は合計11個あり、データには欠損値がなく、合計1000個のデータがあります。
キーコード:
3.3 データ記述統計
Pandas ツールの description() メソッドを使用して、データの平均、標準偏差、最小値、分位数、および最大値を表示します。
キーコードは次のとおりです。
4. 探索的データ分析
4.1 y 変数分布のヒストグラム
Matplotlib ツールの hist() メソッドを使用して、ヒストグラムを描画します。
4.2 相関分析
上図からわかるように、値が大きいほど相関が強いことを示しており、正の値は正の相関、負の値は負の相関を示します。
5. 特徴量エンジニアリング
5.1 特徴データとラベルデータの確立
キーコードは次のとおりです。
5.2 データセットの分割
train_test_split() メソッドを使用して、トレーニング セットの 80% と検証セットの 20% に従って分割します。キー コードは次のとおりです。
6. SSA スズメ検索アルゴリズムを構築して LightGBM 回帰モデルを最適化する
主に SSA スパロー検索アルゴリズムを使用して、ターゲット回帰のために LightGBM アルゴリズムを最適化します。
6.1 最適なパラメータ値を見つけるための SSA スパロー検索アルゴリズム
最適なパラメータ値:
6.2 最適パラメータ構築モデル
ここで、LightGBM 回帰モデルは、最適なパラメーターを通じて構築されます。
7. モデルの評価
7.1 評価指標と結果
評価指標には主にR二乗、平均二乗誤差、説明分散、絶対誤差などが含まれます。
上の表から、R 二乗スコアは 0.9436 であり、モデルがうまく機能していることがわかります。
キーコードは次のとおりです。
7.2 実測値と予測値の比較表
上の図から、実際の値と予測値の変動は基本的に同じであり、モデルがうまく機能していることがわかります。
8. 結論と展望
要約すると、この論文はSSAスパロー検索アルゴリズムを使用してLightGBMアルゴリズムの最適なパラメータ値を見つけて回帰モデルを構築し、最終的に提案したモデルがうまく機能することを証明します。このモデルは、日常的な製品のモデリング作業に使用できます。
# 定义边界函数
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/1-P7LMzRZysEV1WgmQCpp7A
# 提取码:5fv7
# ******************************************************************************
# 构建特征和标签
X = data.drop(columns=['y']) # 构建特征
y = data['y'] # 构建标签
# 数据集的划分
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# SSA初始化参数
SearchAgents_no = 10 # 种群数量
Max_iteration = 1 # 迭代次数
プロジェクトの実践の詳細については、機械学習プロジェクトの実践コレクションのリストを参照してください。