import tensorflow as tf
import pandas as pd
# 과거 데이터 준비
filepath = '/content/sample_data/boston.csv'
boston = pd.read_csv(filepath)
print(boston.columns)
boston.head()
# 독립
independent = boston[['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax', 'ptratio', 'b', 'lstat']]
# 종속
dependent = boston[['medv']]
print(independent.shape, dependent.shape)
# 2. 모델 구조 생성
X = tf.keras.layers.Input(shape=[13])
Y = tf.keras.layers.Dense(1)(X)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')
# 3. 모델 학습(FIT)
model.fit(independent, dependent, epochs=1000, verbose=0)
model.fit(independent, dependent, epochs=10)
# 4. 모델 이용(예측)
print(model.predict(independent[5:10]))
# 종속 변수 확인
print(dependent[5:10])
# 모델 수식 확인
print(model.get_weights())
1. 데이터 준비
import tensorflow as tf
import pandas as pd
# 과거 데이터 준비
filepath = '/content/sample_data/boston.csv'
boston = pd.read_csv(filepath)
print(boston.columns)
boston.head()
- import tensorflow as tf: TensorFlow 라이브러리를 tf라는 이름으로 임포트합니다. TensorFlow는 딥러닝 및 머신러닝 모델을 만들고 훈련시키기 위한 라이브러리입니다.
- import pandas as pd: Pandas 라이브러리를 pd라는 이름으로 임포트합니다. Pandas는 데이터 조작과 분석을 위한 Python 라이브러리입니다.
- filepath = '/content/sample_data/boston.csv': CSV 파일의 경로를 지정합니다.
- boston = pd.read_csv(filepath): Pandas를 사용하여 CSV 파일을 데이터프레임으로 읽어옵니다.
- print(boston.columns): 데이터프레임의 열 이름을 출력합니다.
- boston.head(): 데이터프레임의 첫 5개 행을 출력합니다.
2. 독립 변수와 종속 변수 분리
# 독립
independent = boston[['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax', 'ptratio', 'b', 'lstat']]
# 종속
dependent = boston[['medv']]
print(independent.shape, dependent.shape)
independent = boston[['crim', 'zn', 'indus', 'chas', 'nox', 'rm', 'age', 'dis', 'rad', 'tax', 'ptratio', 'b', 'lstat']]
# 종속
dependent = boston[['medv']]
print(independent.shape, dependent.shape)
- 독립 변수(입력 데이터)와 종속 변수(목표 데이터)를 분리합니다.
- independent: 예측에 사용되는 입력 데이터입니다. 이 코드에서는 보스턴 주택 데이터셋의 여러 피처를 선택합니다. (crim, zn, indus, chas, nox, rm, age, dis, rad, tax, ptratio, b, lstat)
- dependent: 예측하고자 하는 목표 데이터입니다. 여기서는 주택의 중앙값(medv)을 예측합니다.
- print(independent.shape, dependent.shape): 독립 변수와 종속 변수의 크기를 출력합니다.
3. 모델 구조 생성
# 2. 모델 구조 생성
X = tf.keras.layers.Input(shape=[13])
Y = tf.keras.layers.Dense(1)(X)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')
X = tf.keras.layers.Input(shape=[13])
Y = tf.keras.layers.Dense(1)(X)
model = tf.keras.models.Model(X, Y)
model.compile(loss='mse')
- X = tf.keras.layers.Input(shape=[13]): 입력 레이어를 정의합니다. 여기서 입력 데이터의 형태는 13개의 피처를 가지는 1차원 벡터입니다.
- Y = tf.keras.layers.Dense(1)(X): 출력 레이어를 정의합니다. 여기서 Dense 레이어는 1개의 뉴런을 가지며, 입력 레이어 X로부터 값을 받아서 선형 결합을 수행합니다.
- model = tf.keras.models.Model(X, Y): 입력 레이어 X와 출력 레이어 Y를 연결하여 모델을 만듭니다.
- model.compile(loss='mse'): 모델을 컴파일합니다. 손실 함수로 평균 제곱 오차(MSE)를 사용합니다.
4. 모델 학습(FIT)
# 3. 모델 학습(FIT)
model.fit(independent, dependent, epochs=1000, verbose=0)
model.fit(independent, dependent, epochs=10)
model.fit(independent, dependent, epochs=1000, verbose=0)
model.fit(independent, dependent, epochs=10)
- model.fit(independent, dependent, epochs=1000, verbose=0): 모델을 학습시킵니다. 독립 변수 independent와 종속 변수 dependent를 사용하여 1000번의 에포크 동안 학습합니다. verbose=0은 학습 중 출력되는 로그를 생략합니다.
- model.fit(independent, dependent, epochs=10): 추가로 10번의 에포크 동안 모델을 학습합니다. 이번에는 verbose를 생략하여 기본값(1)을 사용합니다.
5. 모델 이용(예측)
# 4. 모델 이용(예측)
print(model.predict(independent[5:10]))
# 종속 변수 확인
print(dependent[5:10])
print(model.predict(independent[5:10]))
# 종속 변수 확인
print(dependent[5:10])
- model.predict(independent[5:10]): 학습된 모델을 사용하여 독립 변수의 일부 데이터를 입력으로 주고 예측을 수행합니다. 여기서는 5번째부터 9번째까지의 데이터를 예측합니다.
- print(dependent[5:10]): 실제 종속 변수 값을 출력하여 예측 값과 비교합니다.
6. 모델 수식 확인
# 모델 수식 확인
print(model.get_weights())
print(model.get_weights())
- model.get_weights(): 모델의 가중치(Weights)와 편향(Biases)을 출력합니다. 이 값들은 학습 과정에서 최적화된 값들로, 학습된 모델의 수식을 나타냅니다.