線形回帰の例

Machine LearningMachine LearningBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、線形回帰を使ってデータセットに最適にフィットする直線を描画する方法と、係数、二乗和残差、決定係数を計算する方法を示します。糖尿病データセットに対して線形回帰を行うために、scikit - learnライブラリを使用します。

VMのヒント

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

時々、Jupyter Notebookが読み込み終わるまで数秒待つ必要があります。Jupyter Notebookの制限により、操作の検証を自動化することはできません。

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/ModelSelectionandEvaluationGroup(["Model Selection and Evaluation"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/ModelSelectionandEvaluationGroup -.-> sklearn/metrics("Metrics") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/metrics -.-> lab-49231{{"線形回帰の例"}} ml/sklearn -.-> lab-49231{{"線形回帰の例"}} end

糖尿病データセットを読み込む

まず、scikit - learnから糖尿病データセットを読み込み、データセットから1つの特徴のみを選択します。

import numpy as np
from sklearn import datasets

## 糖尿病データセットを読み込む
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)

## 1つの特徴のみを使用する
diabetes_X = diabetes_X[:, np.newaxis, 2]

データセットを分割する

次に、データセットを訓練用とテスト用に分割します。データの80%を訓練に、20%をテストに使用します。

## データを訓練用/テスト用に分割する
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

## ターゲットを訓練用/テスト用に分割する
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]

モデルを学習する

次に、線形回帰オブジェクトを作成し、訓練セットを使ってモデルを学習します。

from sklearn import linear_model

## 線形回帰オブジェクトを作成する
regr = linear_model.LinearRegression()

## 訓練セットを使ってモデルを学習する
regr.fit(diabetes_X_train, diabetes_y_train)

予測を行う

これで、学習済みのモデルを使ってテストセットに対する予測を行うことができます。

## テストセットを使って予測を行う
diabetes_y_pred = regr.predict(diabetes_X_test)

評価指標を計算する

係数、平均二乗誤差、決定係数を計算することができます。

from sklearn.metrics import mean_squared_error, r2_score

## 係数
print("Coefficients: \n", regr.coef_)

## 平均二乗誤差
print("Mean squared error: %.2f"
      % mean_squared_error(diabetes_y_test, diabetes_y_pred))

## 決定係数: 1は完全な予測
print("Coefficient of determination: %.2f"
      % r2_score(diabetes_y_test, diabetes_y_pred))

結果を可視化する

最後に、予測値と実際の値をプロットして、モデルがデータにどの程度適合しているかを可視化します。

import matplotlib.pyplot as plt

## 出力をプロットする
plt.scatter(diabetes_X_test, diabetes_y_test, color="black")
plt.plot(diabetes_X_test, diabetes_y_pred, color="blue", linewidth=3)

plt.xticks(())
plt.yticks(())

plt.show()

まとめ

この実験では、線形回帰を使ってデータセットに直線をフィットさせる方法と、係数、二乗和残差、決定係数を計算する方法を学びました。また、散布図を使って予測値と実際の値を可視化する方法も学びました。