5.3.1 합성 데이터와 선형 회귀
보통 저는 크기가 작더라도 실제 데이터셋을 예제로 사용하는 것을 선호합니다. 하지만 여기에서는 임의로 만들어 낸 가짜 데이터를 쓰겠습니다. 가짜 데이터를 만들어서 쓰는 것은 꽤 유용합니다. 학습 시스템을 개발할 때 우리가 완벽하게 조작할 수 있는 데이터가 필요할 때가 있습니다. 이 인공 데이터를 사용하여 입력과 출력 간 숨겨진 관계를 조작하고, 노이즈가 그 관계에 미치는 영향을 조절할 수 있지요. 노이즈의 유형과 크기까지 말입니다.
한 가지 특성과 타깃을 가진 간단한 데이터셋을 만들고, 이를 훈련-테스트 세트로 분리합니다. 노이즈는 -2와 2 사이 값을 선택합니다. 무슨 이야기인지 모르겠다면 2.4.4절로 돌아가 보세요.
In [2]:
N = 20 ftr = np.linspace(-10, 10, num=N) # 특성 값 tgt = 2*ftr**2 - 3 + np.random.uniform(-2, 2, N) # 타깃 = 모델(특성) (train_ftr, test_ftr, train_tgt, test_tgt) = skms.train_test_split(ftr, tgt, test_size=N//2) display(pd.DataFrame({"ftr":train_ftr, "tgt":train_tgt}).T)
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
|
ftr |
-1.58 |
- 6.84 |
-3.68 |
1.58 |
-7.90 |
3.68 |
7.89 |
4.74 |
5.79 |
- 0.53 |
tgt |
2.39 |
91.02 |
22.38 |
3.87 |
122.58 |
23.00 |
121.75 |
40.60 |
62.77 |
-1.61 |