Toy dataset มีความจำเป็นในกรณีเอาไว้ศึกษาตัวแบบโดยเราไม่จำเป็นต้องไปหาข้อมูลจริง dataset แบบแรกคือการสร้างจากตัวแบบ simple linear regression
ความรู้จากเรื่องสมการเส้นตรง
\( Y = WX + b \rightarrow(1) \)
เราจะทำการเติม noise เข้าไปในสมการที่ (1) โดยกำหนดให้ noise มีการแจกแจงแบบ Normal distribution ที่ \( \mu= 0, \sigma = \epsilon \) จะได้สมการใหม่เป็น
\( Y = WX + b + N(0,\epsilon) \rightarrow(2) \)
แล้วก็มาเขียน code กัน
import numpy as np
import matplotlib.pyplot as plt
N = 100 # number of samples
#assign some values to learnable parameters
w = 5.0
b = 2.0
noise_scale = .1 # random noise scale, just a little value
X = np.random.rand(N, 1)
noise = np.random.normal(scale=noise_scale, size=(N, 1))
# Convert shape of (N,)
Y = np.reshape(w * X + b + noise, (-1))
ได้ละสำหรับงานทดลองเรื่อง linear regression ต่อไปเป็นการสร้าง toy dataset สำหรับงาน classification หรือ Logistic Regression บ้าง
import numpy as np
import matplotlib.pyplot as plt
N = 200
#https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.multivariate_normal.html
#create X for group 1, center at (-1,-1),covariance = 0.2
X_1 = np.random.multivariate_normal(
mean = np.array((-1,-1)),
cov = 0.2 * np.eye(2),
size=N//2
)
Y_1 = np.zeros(N//2)
#create X for group 2, center at (1,1),covariance = 0.1
X_2 = np.random.multivariate_normal(
mean = np.array((1,1)),
cov = 0.1 * np.eye(2),
size=N//2
)
Y_2 = np.zeros(N//2)
# merge two groups into one
X = np.vstack([X_1,X_2])
Y = np.concatenate([Y_1,Y_2])
ความคิดเห็น
แสดงความคิดเห็น