015_サンプルデータを自動生成しよう(二重円)

前回は三日月型のデータセットの生成方法について学びました

今回は二重円のデータセット同心円のデータセットの生成方法について学習しましょう!

目次

分類用データセットの自動生成をしよう【二重円】

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()
ヒント

このような散布図になるはずです!

次回は回帰用データセットを作成する方法を学んでいきましょう!

目次