import tensorflow as tf
import pandas as pd
# 데이터 준비
보스턴 = pd.read_csv('boston.csv')
보스턴.columns
독립= 보스턴[['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax', 'ptratio', 'b', 'lstat']]
종속= 보스턴[['medv']]
print(독립.shape, 종속.shape)
# 모델 준비
X = tf.keras.Input(shape=[13]) #독립변수의 개수 13개
Y = tf.keras.layers.Dense(1)(X) #종속변수의 개수 1개
model = tf.keras.Model(X, Y)
model.compile(loss='mse')
13개의 입력으로부터 1개의 출력을 만들어낸다.
'Y = tf.keras.layers.Dense(1)(X)' 는 위의 수식을 만드는 것이다.
이 수식의 w와 b를 찾는 것이다.
우리가 만든 모형과 수식이 '뉴련'과 같은 역할을 한다. 이러한 모형을 '퍼셉트론(Perceptron)'이라고 한다.
w = weight 가중치 . b = bias 편향
# 데이터로 모델 학습
model.fit(독립, 종속, epochs = 500, verbose = 0)
model.fit(독립, 종속, epochs = 10)
verbose 값을 False로 주면 학습 과정 출력 안함.
마지막 10번의 학습은 보여주도록 코딩.
model.predict(독립[:5])
위 결과에서 모델을 통한 예측 값을 확인해본다.
종속[:5]
실제 값과 비교해보자.
w, b = model.get_weights() # weight 가중치 bias 편향
print(w, b)
get_weights() 함수를 통해 weight와 bias를 확인한다.
12개의 w와 1개의 b를 확인할 수 있다.
즉 우리가 만든 모델의 수식을 찾아냈다.
# 수식 출력
# zip 사용
variables = ['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax', 'ptratio', 'b', 'lstat']
weights = [f"{e[0]} * {v}" for e, v in zip(w, variables)]
print("y =", "\n + ".join(weights), f"\n + {b[0]}")
y = -0.08286475390195847 * crim + 0.09206408262252808 * zn + -0.0597853846848011 * indus + 2.901761531829834 * chas + 0.8819381594657898 * nox + 2.54052996635437 * rm + 0.05422786623239517 * age + -0.6408846378326416 * dis + 0.11448012292385101 * rad + -0.0064193508587777615 * tax + 0.37551942467689514 * ptratio + 0.019978608936071396 * b + -0.7009066939353943 * lstat + 1.3484210968017578
+
종속변수가 두개인 학습을 시킨다면 퍼셉트론 두개가 병렬로 연결된 상태다.
수식 두개가 필요하다. 첫 번째 수식에서 w 12개 b 1개, 두 번째 수식에서 w 12개 b 1개 총 26개의 숫자를 찾아야할 것이다.
'AI' 카테고리의 다른 글
[Machine Learning] 기본 정리 (0) | 2023.10.12 |
---|---|
[Machine Learning] Machine Learning (0) | 2023.10.11 |
[Deep Learning] 딥러닝 히든레이어 (0) | 2023.09.05 |
[Deep Learning] 아이리스 품종 분류, 원핫인코딩, 활성화함수 (0) | 2023.09.05 |
[Deep Learning] 딥러닝 Tensorflow 기본, loss (0) | 2023.09.04 |
댓글