機械学習:回帰用データを作成する
【書式】
書式:回帰データの生成
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に書き出す(エクセル分析ツールにかける)
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 という直線データになりそう。

【書式】
【コード】
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)
【書式】
【コード】
%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に書き出す(エクセル分析ツールにかける)
【結果】

なんとなく予想通り(ばらつきが広がる)のかたちになった。
Excelの回帰分析ツールにかけた結果を貼っておく
切片と傾きはおおむね同じ。

【書式】
【コード】
%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に書き出す(エクセル分析ツールにかける)
【結果】

Excelの回帰分析ツールにかけた結果を貼っておく
傾き6?これ以上の深入りはやめておく。
