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

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

機械学習:塊のデータセットの生成

種類別のコード

 

[Take1] 「塊」のデータセットを作る

 

【書式】

書式:データ生成
特徴量,目的変数=make_blobs(パラメータ)
書式:カラム名変更
df= df.rename(columns={変更前: 変更後})
※複数ある時は、{}内を「,」でつなげる。

 

【コード】

from sklearn.datasets import make_blobs
import pandas as pd
 
# 「塊」のデータセット生成
X,y=make_blobs(
    random_state=3, # ランダムの種
    n_features=2, # 特徴量の数
    centers=2,  # 塊の数
    cluster_std=1,  # ばらつき
    n_samples=300 # データ数
)
 
# 作ったデータセットの情報を表示
print("type(X):",type(X))
print("X.shape:",X.shape)
print("len(X):",len(X))
print("type(y):",type(y))
print("y.shape:",y.shape)
print("len(y):",len(y))
 
 
# X(特徴量)でデータフレームを作る
df=pd.DataFrame(X)
 
# y(悦明変数)を「target」の列名でデータフレームに追加
df["target"]=y
 
# dfを表示する(カラム名変更前)
print("\n")
print(df.head())
 
# カラム名を変更する(targetと同じ表記で紛らわしいので)
df= df.rename(columns={0: 'col_0',1: 'col_1'})
 
# dfを表示する(カラム名変更後)
print("\n")
print(df.head())

 

【結果】

type(X): <class 'numpy.ndarray'>
X.shape: (300, 2)
len(X): 300
type(y): <class 'numpy.ndarray'>
y.shape: (300,)
len(y): 300
 
 
0 1 target
0 -5.071794 -1.364393 1
1 -3.174364 -1.145104 1
2 0.818543 5.937601 0
3 -4.338424 -2.055692 1
4 -3.887373 -0.436586 1
 
 
col_0 col_1 target
0 -5.071794 -1.364393 1
1 -3.174364 -1.145104 1
2 0.818543 5.937601 0
3 -4.338424 -2.055692 1
4 -3.887373 -0.436586 1

 

 

[Take2] データセットの散布図を作る

 

【書式】

plt.scatter(横軸カラム名,縦軸カラム名,coloc="b",alpha=0.5)

 

【コード】

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
import pandas as pd
 
# 「塊」のデータセット生成
X,y=make_blobs(
    random_state=3, # ランダムの種
    n_features=2, # 特徴量の数
    centers=2,  # 塊の数
    cluster_std=1,  # ばらつき
    n_samples=300 # データ数
)
 
# X(特徴量)でデータフレームを作る
df=pd.DataFrame(X)
 
# y(悦明変数)を「target」の列名でデータフレームに追加
df["target"]=y
 
# カラム名を変更する
df= df.rename(columns={0: 'col_0',1: 'col_1'})
 
# targetの種類ごとに異なるデータフレームを作る
df0=df[df['target']==0]
df1=df[df['target']==1]
 
# 散布図を描画する
plt.scatter(df0["col_0"],df0["col_1"],color="b",alpha=0.5)
plt.scatter(df1["col_0"],df1["col_1"],color="g",alpha=0.5)
plt.xlabel("col_0")
plt.ylabel("col_1")
plt.show()

 

【結果】

 

 

[Take3] 塊の数が5個の散布図を作る

 

【書式】

 

【コード】

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
import pandas as pd
 
# 「塊」のデータセット生成
X,y=make_blobs(
    random_state=3, # ランダムの種
    n_features=2, # 特徴量の数
    centers=5,  # 塊の数
    cluster_std=1,  # ばらつき
    n_samples=300 # データ数
)
 
# X(特徴量)でデータフレームを作る
df=pd.DataFrame(X)
 
# y(悦明変数)を「target」の列名でデータフレームに追加
df["target"]=y
 
# カラム名を変更する
df= df.rename(columns={0: 'col_0',1: 'col_1'})
 
# targetの種類ごとに異なるデータフレームを作る
df0=df[df['target']==0]
df1=df[df['target']==1]
df2=df[df['target']==2]
df3=df[df['target']==3]
df4=df[df['target']==4]
 
# 散布図を描画する
plt.scatter(df0["col_0"],df0["col_1"],color="b",alpha=0.5)
plt.scatter(df1["col_0"],df1["col_1"],color="g",alpha=0.5)
plt.scatter(df2["col_0"],df2["col_1"],color="r",alpha=0.5)
plt.scatter(df3["col_0"],df3["col_1"],color="m",alpha=0.5)
plt.scatter(df4["col_0"],df4["col_1"],color="c",alpha=0.5)
 
plt.xlabel("col_0")
plt.ylabel("col_1")
plt.show()

 

【結果】

 

 

[Take3-1] 塊の数が5個で、random_state オプションを変えてみる(3→6)

random_state オプションをを変更すると、塊の分布が変わる。

 

【書式】

 

【コード】

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
import pandas as pd
 
# 「塊」のデータセット生成
X,y=make_blobs(
    random_state=6, # ランダムの種★
    n_features=2, # 特徴量の数
    centers=5,  # 塊の数
    cluster_std=1,  # ばらつき
    n_samples=300 # データ数
)
 
# X(特徴量)でデータフレームを作る
df=pd.DataFrame(X)
 
# y(悦明変数)を「target」の列名でデータフレームに追加
df["target"]=y
 
# カラム名を変更する
df= df.rename(columns={0: 'col_0',1: 'col_1'})
 
# targetの種類ごとに異なるデータフレームを作る
df0=df[df['target']==0]
df1=df[df['target']==1]
df2=df[df['target']==2]
df3=df[df['target']==3]
df4=df[df['target']==4]
 
# 散布図を描画する
plt.scatter(df0["col_0"],df0["col_1"],color="b",alpha=0.5)
plt.scatter(df1["col_0"],df1["col_1"],color="g",alpha=0.5)
plt.scatter(df2["col_0"],df2["col_1"],color="r",alpha=0.5)
plt.scatter(df3["col_0"],df3["col_1"],color="m",alpha=0.5)
plt.scatter(df4["col_0"],df4["col_1"],color="c",alpha=0.5)
 
plt.xlabel("col_0")
plt.ylabel("col_1")
plt.show()

 

【結果】

 

 

[Take3-2] 塊の数が5個で cluster_std オプションを変えてみる(1→3)

cluster_std オプションを変更(大きく)すると、個々の塊がぼやける

 

【書式】

 

【コード】

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
import pandas as pd
 
# 「塊」のデータセット生成
X,y=make_blobs(
    random_state=6, # ランダムの種
    n_features=2, # 特徴量の数
    centers=5,  # 塊の数
    cluster_std=3,  # ばらつき★
    n_samples=300 # データ数
)
 
# X(特徴量)でデータフレームを作る
df=pd.DataFrame(X)
 
# y(悦明変数)を「target」の列名でデータフレームに追加
df["target"]=y
 
# カラム名を変更する
df= df.rename(columns={0: 'col_0',1: 'col_1'})
 
# targetの種類ごとに異なるデータフレームを作る
df0=df[df['target']==0]
df1=df[df['target']==1]
df2=df[df['target']==2]
df3=df[df['target']==3]
df4=df[df['target']==4]
 
# 散布図を描画する
plt.scatter(df0["col_0"],df0["col_1"],color="b",alpha=0.5)
plt.scatter(df1["col_0"],df1["col_1"],color="g",alpha=0.5)
plt.scatter(df2["col_0"],df2["col_1"],color="r",alpha=0.5)
plt.scatter(df3["col_0"],df3["col_1"],color="m",alpha=0.5)
plt.scatter(df4["col_0"],df4["col_1"],color="c",alpha=0.5)
 
plt.xlabel("col_0")
plt.ylabel("col_1")
plt.show()

 

【結果】