tanakahdaのプログラマ手帳

プログラミングとかソフトウェア開発とかの備忘録

irisデータセットをseabornで散布図に展開し単回帰分析してみる@Python

irisデータセットを読み込む

import pandas as pd
import seaborn as sns
df = sns.load_dataset('iris')
df

f:id:tanakahda:20211031121522p:plain

  • sepal length ... ガクの長さ
  • sepal width ... ガクの幅
  • petal length ... 花弁の長さ
  • petal width ... 花弁の幅

散布図に展開する

行データから花弁の幅(patal width)と長さ(petal length)を散布図に展開してみる。

sns.scatterplot(x=df.petal_width, y=df.petal_length)

f:id:tanakahda:20211031120743p:plain

線形単回帰モデルを作成する

from sklearn.linear_model import LinearRegression

model = LinearRegression()

# 学習データ(花弁の幅)
X = pd.DataFrame(df.petal_width)
# 正解データ(花弁の長さ)
Y = df.petal_length

# モデルを学習する
model.fit(X, Y)

花弁の幅に対して花弁の長さは正解データになるため、教師あり学習になる

散布図に回帰直線を重ねる

import matplotlib.pyplot as plt

# さきほど作成したモデルを使用して、Xに大して予測を実行し予測値(Y_predict)を算出する
Y_predict = model.predict(X)

# 散布図にプロットして回帰直線を重ねる
sns.scatterplot(x=df.petal_width, y=df.petal_length)
plt.plot(X, Y_predict, color='red')

f:id:tanakahda:20211031124409p:plain