前回は三日月型のデータセットの生成方法について学びました
今回は二重円のデータセットと同心円のデータセットの生成方法について学習しましょう!
分類用データセットの自動生成をしよう【二重円】
make_circles()命令で「二重円のデータセット」を自動で生成することができます!このデータセットは直線で分割できません。
パラメータは三日月型と同じく
・データの個数
・ノイズ
・ランダム生成の種
を指定して毎回同じ形のランダムデータにすることができます。
以下の変数を用いて実際にコードを書いていきましょう!
変数名 | 意味 |
---|---|
random_state | ランダム生成の種を指定 |
n_samples | データの個数 |
noise | ノイズ |
①ノイズ0.1のデータを作ろう
ランダムの種 = 4
ノイズ = 0.1
点の数 = 300
を指定してノイズが0.1の二重円のデータセットを作ってみましょう!
コード
#1 ノイズ0.1
#2~3 分類別にデータフレームを分ける
#4 シアンの散布図
#5 マゼンタの散布図
from sklearn.datasets import make_circles
X, y = make_circles(
random_state=4,
noise = 0.1, #1
n_samples=300)
# 特徴量(X)でデータフレームを作り、分類(y)をtargetの列として追加
df = pd.DataFrame(X)
df["target"] = y
df0 = df[df["target"]==0] #2
df1 = df[df["target"]==1] #3
plt.figure(figsize=(5, 5))
plt.scatter(df0[0], df0[1], color="c", alpha=0.4) #4
plt.scatter(df1[0], df1[1], color="m", alpha=0.4) #5
plt.grid()
plt.show()
参考資料:Python3年生機械学習のしくみ
実行結果
これで二重円のデータを生成することが出来ました!
確認問題1
ランダムの種=3
ばらつき=0.2
点の数=400
の二重円のデータセットを作成して、青と赤の散布図を半透明で描画してみましょう。
答えはコチラをクリック!
答え:
from sklearn.datasets import make_circles
from pandas import DataFrame
import pandas as pd
import matplotlib.pyplot as plt
X, y = make_circles(
random_state=3,
noise = 0.2,
n_samples=300)
df = pd.DataFrame(X)
df["target"] = y
df0 = df[df["target"]==0]
df1 = df[df["target"]==1]
plt.figure(figsize=(5, 5))
plt.scatter(df0[0], df0[1], color="b", alpha=0.5)
plt.scatter(df1[0], df1[1], color="r", alpha=0.5)
plt.grid()
plt.show()
ヒント
このような散布図になるはずです!
分類用データセットの自動生成をしよう【同心円】
make_gaussian_quantiles()命令で「同心円のデータセット」を自動で生成することができます!このデータセットも直線で分割できません。
パラメータは
・データの個数
・特徴量の数
・グループの数
・ランダム生成の種
を指定して毎回同じ形のランダムデータにすることができます。
以下の変数を用いて実際にコードを書いていきましょう!
変数名 | 意味 |
---|---|
random_state | ランダム生成の種を指定 |
n_samples | データの個数 |
n_features | 特徴量の数 |
n_classes | グループの数 |
①グループ3つの同心円
ランダムの種 = 4
特徴量=2
グループ=3
点の数 = 300
を指定してグループが3つの同心円のデータセットを作ってみましょう!
#1 グループ3つ
#2~4 分類別にデータフレームを分ける
#5~7 シアン・マゼンタ・黄色の散布図
from sklearn.datasets import make_gaussian_quantiles
X, y = make_gaussian_quantiles(
random_state=4,
n_features=2,
n_classes=3, #1
n_samples=300)
df = pd.DataFrame(X)
df["target"] = y
df0 = df[df["target"]==0] #2
df1 = df[df["target"]==1] #3
df2 = df[df["target"]==2] #4
plt.figure(figsize=(5, 5))
plt.scatter(df0[0], df0[1], color="c", alpha=0.4) #5
plt.scatter(df1[0], df1[1], color="m", alpha=0.4) #6
plt.scatter(df2[0], df2[1], color="y", alpha=0.4) #7
plt.grid()
plt.show()
参考資料:Python3年生機械学習のしくみ
実行結果
グループを3つもった同心円のデータセットを作成することができました!
確認問題2
ランダムの種=3
特徴量=2
グループ=4
点の数=500
の同心円のデータセットを作成して、青・赤・緑・黄色の散布図を半透明で描画してみましょう。
答えはコチラをクリック!
答え:
from sklearn.datasets import make_gaussian_quantiles
from pandas import DataFrame
import pandas as pd
import matplotlib.pyplot as plt
X, y = make_gaussian_quantiles(
random_state=3,
n_features=2,
n_classes=4,
n_samples=500)
df = pd.DataFrame(X)
df["target"] = y
df0 = df[df["target"]==0]
df1 = df[df["target"]==1]
df2 = df[df["target"]==2]
df3 = df[df["target"]==3]
plt.figure(figsize=(5, 5))
plt.scatter(df0[0], df0[1], color="b", alpha=0.5)
plt.scatter(df1[0], df1[1], color="r", alpha=0.5)
plt.scatter(df2[0], df2[1], color="g", alpha=0.5)
plt.scatter(df3[0], df3[1], color="y", alpha=0.5)
plt.grid()
plt.show()
ヒント
このような散布図になるはずです!
次回は回帰用データセットを作成する方法を学んでいきましょう!