Basic Data Science : การสร้าง Toy Dataset

Toy dataset มีความจำเป็นในกรณีเอาไว้ศึกษาตัวแบบโดยเราไม่จำเป็นต้องไปหาข้อมูลจริง dataset แบบแรกคือการสร้างจากตัวแบบ simple linear regression

ความรู้จากเรื่องสมการเส้นตรง

\( Y = WX + b \rightarrow(1) \)

ซึ่ง W และ b เรียกว่า learnable parameters เป็นผลลัพธ์ที่เราต้องการหาจากการใช้  gradient descendant และ Y คือ label  data และ  X คือ train data

เราจะทำการเติม 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])



ความคิดเห็น