Pythonを一から勉強してデータ分析できるようになる

~ Pythonとデータ分析のお勉強の記録 ~

機械学習:回帰用データを作成する

[Take1] まずはノイズオプションをゼロにして作ってみる

 

【書式】

書式:回帰データの生成
make_regression(ランダムの種, 特徴量, ノイズ, y切片, データ個数)
書式:列の追加
df["列名"]=y

 

【コード】

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
import pandas as pd
 
# 特徴量 X、分類 y のデータ作成
X,y=make_regression(
    random_state=3, # ランダムの種
    n_features=1, # 特徴量
    noise=0, # ノイズ
    bias=100, # y切片
    n_samples=300 # データ数
)
 
# 特徴量 X、分類 y のデータフレームを作成
df=pd.DataFrame(X)
# yをdfの「target」列に追加する
df["target"]=y
 
# グラフの描画
plt.figsize=(5,5)
plt.scatter(df[0],df["target"],color="b",alpha=0.5)
plt.show()
 
 
# 以下参考
# dfをcsvに書き出す(エクセル分析ツールにかける)
df.to_csv("/content/drive/MyDrive/Python_2024/003/n-0_r-3.csv")
print(df.head())
print(df.shape)
print(y.shape)

 

【結果】

 
0 target
0 -1.744110 49.083983
1 -1.244123 63.680160
2 -0.140620 95.894863
3 1.729417 150.487088
4 0.425967 112.435298
(300, 2)
(300,)

 

基準は、(x,y)=(0,100)を通る直線ということだと思われる。

Excelの回帰分析ツールにかけた結果を貼っておく

結局、y=29.2x+100 という直線データになりそう。

 

[Take1-1] 特徴量と y のデータ型等調べてみる

 

【書式】

 

【コード】

from sklearn.datasets import make_regression
import pandas as pd
 
# 特徴量 X、 y のデータ作成
X,y=make_regression(
    random_state=3, # ランダムの種
    n_features=1, # 特徴量
    noise=10, # ノイズ
    bias=100, # y切片
    n_samples=30 # データ数(わかりやすくするために減らす)
)
 
# 特徴量 X、分類 y のデータフレームを作成
df=pd.DataFrame(X)
 
# 各データの型と形式を羅列する
print("Xの内容")
print(X)
print("\n")
print("yの内容")
print(y)
print("\n")
print("Xのデータ型: ",type(X))
print("Xのサイズ: ",X.shape)
print("\n")
print("yのデータ型: ",type(y))
print("yのサイズ: ",y.shape)
print("\n")
print("dfのデータ型: ",type(df))
print("dfのサイズ: ",df.shape)

 

【結果】

Xの内容
[[-0.40467741]
[ 1.70957306]
[-0.35475898]
[ 1.78862847]
[ 0.62524497]
[-0.08274148]
[-0.47721803]
[-0.7129932 ]
[-1.10106763]
[-1.54647732]
[-1.8634927 ]
[ 0.43650985]
[ 0.05003364]
[-0.62700068]
[ 0.09649747]
[-0.04381817]
[-0.2056499 ]
[ 0.98236743]
[-0.16051336]
[-0.2773882 ]
[ 0.88131804]
[ 1.48614836]
[-0.54535995]
[-1.31386475]
[-1.18504653]
[ 0.88462238]
[-0.23003072]
[-1.02378514]
[-0.76883635]
[ 0.23671627]]
 
 
yの内容
[ 59.23041008 209.51540911 74.48741923 196.6240151 122.64247591
90.90871473 79.45754396 66.09517423 18.82827412 -9.78062739
-35.72030042 136.98156109 103.94263972 40.89943117 101.5597172
99.68222847 97.41828583 178.09277067 97.12241835 64.54730783
143.36925447 187.24737037 64.01834033 4.25452278 30.97495863
148.15167995 84.09686667 21.02405319 42.78785649 130.22336094]
 
 
Xのデータ型: <class 'numpy.ndarray'>
Xのサイズ: (30, 1)
 
 
yのデータ型: <class 'numpy.ndarray'>
yのサイズ: (30,)
 
 
dfのデータ型: <class 'pandas.core.frame.DataFrame'>
dfのサイズ: (30, 1)

 

 

[Take2] ノイズパラメータを変更した場合「noise=10」

 

【書式】

 

【コード】

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
import pandas as pd
 
# 特徴量 X、分類 y のデータ作成
X,y=make_regression(
    random_state=3, # ランダムの種
    n_features=1, # 特徴量
    noise=10, # ノイズ★
    bias=100, # y切片
    n_samples=300 # データ数
)
 
# 特徴量 X、分類 y のデータフレームを作成
df=pd.DataFrame(X)
# yをdfの「target」列に追加する
df["target"]=y
 
# グラフの描画
plt.figsize=(5,5)
plt.scatter(df[0],df["target"],color="b",alpha=0.5)
plt.show()
 
# dfをcsvに書き出す(エクセル分析ツールにかける)
df.to_csv("/content/drive/MyDrive/Python_2024/003/n-10_r-3.csv")

 

【結果】

 

なんとなく予想通り(ばらつきが広がる)のかたちになった。

Excelの回帰分析ツールにかけた結果を貼っておく

切片と傾きはおおむね同じ。

 

[Take3] ランダムパラメータを変更した場合「random_state=6」

 

【書式】

 

【コード】

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn.datasets import make_regression
import pandas as pd
 
# 特徴量 X、分類 y のデータ作成
X,y=make_regression(
    random_state=6, # ランダムの種★
    n_features=1, # 特徴量
    noise=0, # ノイズ
    bias=100, # y切片
    n_samples=300 # データ数
)
 
# 特徴量 X、分類 y のデータフレームを作成
df=pd.DataFrame(X)
# yをdfの「target」列に追加する
df["target"]=y
 
# グラフの描画
plt.figsize=(5,5)
plt.scatter(df[0],df["target"],color="b",alpha=0.5)
plt.show()
 
# dfをcsvに書き出す(エクセル分析ツールにかける)
df.to_csv("/content/drive/MyDrive/Python_2024/003/n-0_r-6.csv")

 

【結果】

 

Excelの回帰分析ツールにかけた結果を貼っておく

傾き6?これ以上の深入りはやめておく。