scikit-learnを使った回帰モデルの実装について解説。線形回帰、リッジ回帰、ランダムフォレスト回帰を例に、データの準備からモデルの学習、評価方法までを詳しく説明する。random_stateの役割についても解説し、再現性の重要性に触れる。
機械学習における回帰(regression) は、数値を予測するタスクです。
例えば、住宅価格の予測や気温の予測など、連続値を出力する問題に適用されます。
本記事では、scikit-learn を使って基本的な回帰モデルを実装し、その評価方法について詳しく解説します。
回帰分析は、ある入力変数(特徴量)から**目的変数(ターゲット)**の数値を予測する手法です。
主な回帰モデルには以下のようなものがあります。
まず、scikit-learn の make_regression
を使って回帰用のデータを作成します。
PYTHONfrom sklearn.datasets import make_regression import pandas as pd # サンプルデータの作成 X, y = make_regression(n_samples=500, n_features=3, noise=15, random_state=42)
random_state=42
とは?random_state
は乱数の種を固定するためのパラメータです。
同じ値(例えば 42
)を指定すると、毎回同じデータが生成され、結果が再現可能になります。
特に、モデルの比較や検証を行う際に有用です。
PYTHON# データの確認 df = pd.DataFrame(X, columns=[f'Feature_{i}' for i in range(1, 4)]) df['Target'] = y print(df.head())
出力結果:
Feature_1 Feature_2 Feature_3 Target 0 -0.0744 -0.8327 0.8295 -12.4693 1 1.1712 -0.2751 -0.0900 63.1729 2 -0.2507 -0.8982 1.2566 -32.1441 3 1.7946 -1.4154 -1.1460 112.7965 4 0.0514 1.3101 1.1367 47.0288
学習データとテストデータに分割します。
PYTHONfrom sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) print(f"訓練データ: {X_train.shape}, テストデータ: {X_test.shape}")
出力結果:
訓練データ: (400, 3), テストデータ: (100, 3)
まず、最も基本的な線形回帰を使ってみましょう。
PYTHONfrom sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score # モデルの作成と学習 model = LinearRegression() model.fit(X_train, y_train) # 予測と評価 y_pred = model.predict(X_test) mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) print(f"Mean Squared Error: {mse:.2f}") print(f"R² Score: {r2:.2f}")
出力結果:
Mean Squared Error: 226.47 R² Score: 0.89
線形回帰はシンプルながらも多くの回帰問題で有効な手法です。
リッジ回帰は、正則化項を加えて過学習を防ぐ回帰手法です。
PYTHONfrom sklearn.linear_model import Ridge # モデルの作成と学習 model = Ridge(alpha=1.0) model.fit(X_train, y_train) # 予測と評価 y_pred = model.predict(X_test) mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) print(f"Mean Squared Error: {mse:.2f}") print(f"R² Score: {r2:.2f}")
出力結果:
Mean Squared Error: 224.13 R² Score: 0.90
リッジ回帰を使うことで、汎化性能を向上させることができます。
決定木を多数組み合わせたランダムフォレスト回帰を試してみます。
PYTHONfrom sklearn.ensemble import RandomForestRegressor # モデルの作成と学習 model = RandomForestRegressor(n_estimators=100, random_state=42) model.fit(X_train, y_train) # 予測と評価 y_pred = model.predict(X_test) mse = mean_squared_error(y_test, y_pred) r2 = r2_score(y_test, y_pred) print(f"Mean Squared Error: {mse:.2f}") print(f"R² Score: {r2:.2f}")
出力結果:
Mean Squared Error: 175.32 R² Score: 0.93
ランダムフォレスト回帰は非線形データにも適用しやすく、高精度な予測が可能です。
本記事では、scikit-learn を使って基本的な回帰モデルを実装しました。
回帰問題を解く際には、データの特性に応じて適切なモデルを選択することが重要です。
回 | タイトル | リンク |
---|---|---|
第 1 回 | scikit-learn とは? | 詳 細 |
第 2 回 | データの前処理 | 詳 細 |
第 3 回 | モデルの評価と精度指標 | 詳 細 |
第 4 回 | 分類モデルの実装 | 詳 細 |
第 5 回 | 回帰モデルの実装 | この記事 |
第 6 回 | k-meansとPCAの実装 | 詳 細 |
第 7 回 | 階層的クラスタリング & DBSCAN | 詳 細 |
第 8 回 | クラスタリングの評価方法 | 詳 細 |
第 9 回 | クラスタリングを用いた事例 | 詳 細 |
第 10 回 | クラスタリングのビジネス活用 | 詳 細 |
当サイトの情報は、一般的な参考情報として提供しております。
正確な情報の掲載に努めておりますが、その内容の正確性・完全性・最新性を保証するものではありません。
記事の内容をご利用の際は、ご自身の責任において判断し、必要に応じて専門家にご相談ください。
当サイトの情報の利用により生じたいかなる損害についても、一切の責任を負いかねますのでご了承ください。
※ 本ページでは、著作権法に基づき、適正な引用の範囲内でコンテンツを紹介しています。
オリジナルの情報は発信元をご確認ください。
もし問題がありましたら、こちら からお問い合わせください。