機械学習入門 vol.8 回帰 - その他の回帰 (k近傍法,ラッソ回帰,リッジ回帰..etc) -> 講座第4回に相当

本コンテンツは機械学習入門講座を各所でやっている内容の一部を、受講者の皆様の予習・復習のために公開しているものです。対象読者は、Pythonをやったことがほとんどない方やつまづいてしまっている方でも概ね実行できるようになるレベルで書いています。解説は講座でそれなりに詳しくしているため、コードにコメントする以上の説明はあまり記述していません。

各コードはJupyterシリーズやiPythonで記述しながら実行できるように記述しています。

AI/DX/機械学習/Pythonのアドバイザリー、社内研修、セミナー等承っております。
webサイトからお問い合わせください。
[BeeComb Grid株式会社](https://beecomb-grid.co.jp/)

# 機械学習入門シリーズ記事

1. [機械学習入門 vol.1 Pythonの基礎１ 記述とデータ型](https://qiita.com/mychaelstyle/items/500f67b01fda79c215d0) -> 講座第3回に相当
1. [機械学習入門 vol.2 Pythonの基礎2 条件分岐と処理](https://qiita.com/mychaelstyle/items/891dcad83e94f8edd3aa) -> 講座第3回に相当
1. [機械学習入門 vol.3 Pythonの基礎3 関数・クラス・モジュール](https://qiita.com/mychaelstyle/items/d5506f372219b162c8c8) -> 講座第3回に相当
1. [機械学習入門 vol.4 表（Pandas）の基本操作](https://qiita.com/mychaelstyle/items/96ea9e8c679f908205ab) -> 講座第3回/第4回に相当
1. [機械学習入門 vol.5 グラフ(Seaborn)の基本操作](https://qiita.com/mychaelstyle/items/5acf7fdb1f11ba5478d1) -> 講座第3/4回に相当
1. [機械学習入門 vol.6 回帰 - 線形回帰](https://qiita.com/mychaelstyle/items/a12882a75d348952b1b9) -> 講座第4回に相当
1. [機械学習入門 vol.7 回帰 - ランダムフォレストとパラメータチューニング](https://qiita.com/mychaelstyle/items/48238d70c7602ca14a0c) -> 講座第4回に相当
1. 機械学習入門 vol.8 回帰 - その他の回帰 (k近傍法,ラッソ回帰,リッジ回帰..etc) -> 講座第4回に相当
1. [機械学習入門 vol.9 判別（分類）](https://qiita.com/mychaelstyle/items/34ca447a625c752dbfda) -> 講座第5回に相当
1. [機械学習入門 vol.10 次元削減](https://qiita.com/mychaelstyle/items/69aab0c098dfa1e19e7d) -> 講座第6回に相当
1. [機械学習入門 vol.11 クラスタリング](https://qiita.com/mychaelstyle/items/89d04ce33c3e05d9545c) -> 講座第6回に相当

# 機械学習入門 vol.8 回帰 - その他の回帰 (k近傍法,ラッソ回帰,リッジ回帰..etc)

講座で紹介したその他の回帰のいくつかのサンプルコードを載せておきます。同じデータセットで何度も学習・予測を繰り返してみると、それぞれのアルゴリズムが対象のデータセットに対してどれくらいマッチしているのか、それはなぜなのかということを考察できると思いますので、講座で話したアルゴリズムを思い返して、深掘りしていけばネクストステップに進みやすくなるでしょう。

本記事のプログラムは[機械学習入門 vol.6 回帰 - 線形回帰](https://qiita.com/mychaelstyle/items/a12882a75d348952b1b9)から順番に実行するとそのまま実行できるように記述しています。

## k近傍法 - KNeighborsRegressor

```python
from sklearn.neighbors import KNeighborsRegressor
# 学習時間と合計点数を取り出し
data_x = df[['週の学習時間']]
data_y = df[['合計点数']]
# データをトレーニング用と検証用に分割
train_x, test_x, train_y, test_y = train_test_split(data_x, data_y, test_size=0.2)
# モデルインスタンス
knr = KNeighborsRegressor()
# 学習させる
knr.fit(train_x, train_y)
# 検証用データで予測する
preds = knr.predict(test_x)
# 平均絶対誤差で精度検証
mean_absolute_error(test_y, preds)
```

## ラッソ回帰 - Lasso

```python
from sklearn.linear_model import Lasso
# 学習時間と合計点数を取り出し
data_x = df[['週の学習時間']]
data_y = df[['合計点数']]
# データをトレーニング用と検証用に分割
train_x, test_x, train_y, test_y = train_test_split(data_x, data_y, test_size=0.2)
# ラッソモデルインスタンス
lasso = Lasso()
# 学習させる
lasso.fit(train_x, train_y)
# 各次元の傾きと切片を表示
print(lasso.coef_)
print(lasso.intercept_)
# 検証用データで予測する
preds = lasso.predict(test_x)
# 平均絶対誤差で精度検証
mean_absolute_error(test_y, preds)
```

## リッジ回帰 - Ridge

```python
from sklearn.linear_model import Ridge
# 学習時間と合計点数を取り出し
data_x = df[['週の学習時間']]
data_y = df[['合計点数']]
# データをトレーニング用と検証用に分割
train_x, test_x, train_y, test_y = train_test_split(data_x, data_y, test_size=0.2)
# モデルインスタンス
ridge_model = Ridge()
# 学習させる
ridge_model.fit(data_x, data_y)
print(ridge_model.coef_)              # 傾き
print(ridge_model.intercept_)         # 切片
# 検証用データで予測する
preds = ridge_model.predict(test_x)
# 平均絶対誤差で精度検証
mean_absolute_error(test_y, preds)
```

## Adaブースト

```python
from sklearn.ensemble import AdaBoostRegressor
# 学習時間と合計点数を取り出し
data_x = df[['週の学習時間']]
data_y = df[['合計点数']]
# データをトレーニング用と検証用に分割
train_x, test_x, train_y, test_y = train_test_split(data_x, data_y, test_size=0.2)
# モデルインスタンス
abr = AdaBoostRegressor()
# 学習させる
abr.fit(data_x, data_y)
# 検証用データで予測する
preds = abr.predict(test_x)
# 平均絶対誤差で精度検証
mean_absolute_error(test_y, preds)
```

## 線形サポートベクター回帰

```python
from sklearn.svm import LinearSVR
# 学習時間と合計点数を取り出し
data_x = df[['週の学習時間']]
data_y = df[['合計点数']]
# データをトレーニング用と検証用に分割
train_x, test_x, train_y, test_y = train_test_split(data_x, data_y, test_size=0.2)
# モデルインスタンス
lsvr = LinearSVR()
# 学習させる
lsvr.fit(data_x, data_y)
# 検証用データで予測する
preds = lsvr.predict(test_x)
# 平均絶対誤差で精度検証
mean_absolute_error(test_y, preds)
```

# 機械学習入門シリーズ記事

1. [機械学習入門 vol.1 Pythonの基礎１ 記述とデータ型](https://qiita.com/mychaelstyle/items/500f67b01fda79c215d0) -> 講座第3回に相当
1. [機械学習入門 vol.2 Pythonの基礎2 条件分岐と処理](https://qiita.com/mychaelstyle/items/891dcad83e94f8edd3aa) -> 講座第3回に相当
1. [機械学習入門 vol.3 Pythonの基礎3 関数・クラス・モジュール](https://qiita.com/mychaelstyle/items/d5506f372219b162c8c8) -> 講座第3回に相当
1. [機械学習入門 vol.4 表（Pandas）の基本操作](https://qiita.com/mychaelstyle/items/96ea9e8c679f908205ab) -> 講座第3回/第4回に相当
1. [機械学習入門 vol.5 グラフ(Seaborn)の基本操作](https://qiita.com/mychaelstyle/items/5acf7fdb1f11ba5478d1) -> 講座第3/4回に相当
1. [機械学習入門 vol.6 回帰 - 線形回帰](https://qiita.com/mychaelstyle/items/a12882a75d348952b1b9) -> 講座第4回に相当
1. [機械学習入門 vol.7 回帰 - ランダムフォレストとパラメータチューニング](https://qiita.com/mychaelstyle/items/48238d70c7602ca14a0c) -> 講座第4回に相当
1. 機械学習入門 vol.8 回帰 - その他の回帰 (k近傍法,ラッソ回帰,リッジ回帰..etc) -> 講座第4回に相当
1. [機械学習入門 vol.9 判別（分類）](https://qiita.com/mychaelstyle/items/34ca447a625c752dbfda) -> 講座第5回に相当
1. [機械学習入門 vol.10 次元削減](https://qiita.com/mychaelstyle/items/69aab0c098dfa1e19e7d) -> 講座第6回に相当
1. [機械学習入門 vol.11 クラスタリング](https://qiita.com/mychaelstyle/items/89d04ce33c3e05d9545c) -> 講座第6回に相当

AI/DX/機械学習/Pythonのアドバイザリー、社内研修、セミナー等承っております。
webサイトからお問い合わせください。
[BeeComb Grid株式会社](https://beecomb-grid.co.jp/)