等張回帰による非線形回帰

Beginner

This tutorial is from open-source community. Access the source code

はじめに

この実験では、scikit-learn を使って等張回帰を探索します。等張回帰は、1 次元のデータに非減少関数をフィットさせる手法です。回帰モデルにおいて線形性の仮定を満たさないデータがある場合に役立ちます。

VM のヒント

VM の起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebook を使って練習しましょう。

Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。

学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

まず、sklearn.isotonicモジュールからIsotonicRegressionクラスをインポートしましょう。

from sklearn.isotonic import IsotonicRegression

サンプルデータを作成する

次に、等張回帰モデルにフィットさせるためのサンプルデータを作成する必要があります。この例では、入力データとターゲット値をそれぞれ表す 2 つの配列Xyを生成します。

import numpy as np

## Generate random input data
np.random.seed(0)
X = np.random.rand(100)
y = 4 * X + np.random.randn(100)

等張回帰モデルをフィットさせる

これで、等張回帰モデルをデータにフィットさせることができます。IsotonicRegressionクラスのインスタンスを作成し、入力データとターゲット値を使ってfitメソッドを呼び出します。

## Fit isotonic regression model
ir = IsotonicRegression()
ir.fit(X, y)

モデルを使って予測する

モデルをフィットさせた後、新しいデータに対する予測を行うことができます。新しい配列X_newを作成し、対応するターゲット値を予測しましょう。

## Create new data for prediction
X_new = np.linspace(0, 1, 100)
y_pred = ir.predict(X_new)

結果を可視化する

最後に、等張回帰モデルの結果を可視化しましょう。元のデータポイントを散布図として、予測値を線としてプロットすることができます。

import matplotlib.pyplot as plt

## Plot the original data and predicted values
plt.scatter(X, y, c='b', label='Original Data')
plt.plot(X_new, y_pred, c='r', label='Isotonic Regression')
plt.xlabel('X')
plt.ylabel('y')
plt.legend()
plt.show()

まとめ

等張回帰は、線形回帰モデルの仮定を満たさない非線形データがある場合に便利な手法です。データに非減少関数をフィットさせることで、等張回帰はデータの潜在的な傾向を捉える逐次線形近似を提供します。この実験では、scikit - learn のIsotonicRegressionクラスを使って等張回帰モデルをフィットさせ、予測を行い、結果を可視化する方法を学びました。