X = np.zeros((N*K,D))
y = np.zeros(N*K, dtype='uint8')
np.random.seed(0)
for j in range(K):
ix = range(N*j,N*(j+1))
r = np.linspace(0.0,1,N)
t = np.linspace(j*4,(j+1)*4,N) + np.random.randn(N)*0.2
X[ix] = np.c_[r*np.sin(t), r*np.cos(t)]
y[ix] = j
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
N = 500 # 1クラスあたりのデータ数
D = 2 # データの次元
K = 3 # クラス数
#データ定義
X = np.zeros((N*K,D))
y = np.zeros(N*K, dtype='uint8')
np.random.seed(0)
for j in range(K):
ix = range(N*j,N*(j+1))
r = np.linspace(0.0,1,N)
t = np.linspace(j*4,(j+1)*4,N) + np.random.randn(N)*0.2
X[ix] = np.c_[r*np.sin(t), r*np.cos(t)]
y[ix] = j
#3×3の単位行列を生成してラベルのワンホットエンコーディング
n_values = np.max(y) + 1
Y = np.eye(n_values)[y]
#データを8:2に分割
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2)
#モデル定義
model = Sequential()#Sequentailオブジェクトを生成
model.add(Dense(input_dim = 2, units = 4, activation = 'relu'))#1層目、活性化関数はReLU関数
pred_labels = [] #結果格納用
pred = model.predict(test_X)#試験データを入力して出力を得る
for p in pred:
if np.argmax(p) == 0 :
pred_labels.append([1.,0.,0.])
elif np.argmax(p) == 1:
pred_labels.append([0.,1.,0.])
else:
pred_labels.append([0.,0.,1.])
pred_labels = np.array(pred_labels) #numpy arrayに変換
試験用データセットで推論
では、test_Xに対して推論を行わせ、その結果を描画してみましょう。
デフォルトのコード
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
N = 500 # 1クラスあたりのデータ数
D = 2 # データの次元
K = 3 # クラス数
#データ定義
X = np.zeros((N*K,D))
y = np.zeros(N*K, dtype='uint8')
np.random.seed(0)
for j in range(K):
ix = range(N*j,N*(j+1))
r = np.linspace(0.0,1,N)
t = np.linspace(j*4,(j+1)*4,N) + np.random.randn(N)*0.2
X[ix] = np.c_[r*np.sin(t), r*np.cos(t)]
y[ix] = j
#3×3の単位行列を生成してラベルのワンホットエンコーディング
n_values = np.max(y) + 1
Y = np.eye(n_values)[y]
#データを8:2に分割
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2)
#モデル定義
model = Sequential()#Sequentailオブジェクトを生成
model.add(Dense(input_dim = 2, units = 4, activation = 'relu'))#1層目、活性化関数はReLU関数
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
N = 500 # 1クラスあたりのデータ数
D = 2 # データの次元
K = 3 # クラス数
#データ定義
X = np.zeros((N*K,D))
y = np.zeros(N*K, dtype='uint8')
np.random.seed(0)
for j in range(K):
ix = range(N*j,N*(j+1))
r = np.linspace(0.0,1,N)
t = np.linspace(j*4,(j+1)*4,N) + np.random.randn(N)*0.2
X[ix] = np.c_[r*np.sin(t), r*np.cos(t)]
y[ix] = j
#3×3の単位行列を生成してラベルのワンホットエンコーディング
n_values = np.max(y) + 1
Y = np.eye(n_values)[y]
#データを8:2に分割
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2)
#モデル定義
model = Sequential()
model.add(Dense(input_dim = 2, units = 8, activation = 'relu'))#隠れ層のサイズを4から8に変更
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import SGD
N = 500 # 1クラスあたりのデータ数
D = 2 # データの次元
K = 3 # クラス数
#データ定義
X = np.zeros((N*K,D))
y = np.zeros(N*K, dtype='uint8')
np.random.seed(0)
for j in range(K):
ix = range(N*j,N*(j+1))
r = np.linspace(0.0,1,N)
t = np.linspace(j*4,(j+1)*4,N) + np.random.randn(N)*0.2
X[ix] = np.c_[r*np.sin(t), r*np.cos(t)]
y[ix] = j
#3×3の単位行列を生成してラベルのワンホットエンコーディング
n_values = np.max(y) + 1
Y = np.eye(n_values)[y]
#データを8:2に分割
train_X, test_X, train_Y, test_Y = train_test_split(X, Y, test_size=0.2)
#モデル定義
model = Sequential()
model.add(Dense(input_dim = 2, units = 8, activation = 'relu'))#隠れ層のサイズを4から8に変更