카테고리 없음
머신 러닝 - 행복 지수 예측
abccoco
2022. 5. 13. 21:10
맥주 소비량을 토대로, 행복 지수를 예측해보는 과제
코드를 보고 이해할 수 있도록 설명을 같이 작성했다
문제: 맥주소비량이 1000일 때의 행복지수를 예측한 결과를 추출한다
임포트 한다
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam, SGD
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split
인포트 후에는 파일을 읽어 주어야 한다 read_csv
그 다음 head에서 5개만 가져와서 어떤 데이터를 사용할지 눈으로 확인한다
df = pd.read_csv('HappinessAlcoholConsumption.csv')
df.head(5)
데이터셋 가공 작업
head에서 확인한 Beer_PerCapita를 입력값으로 HappinessScore를 출력 값으로 x,y 데이터에 넣어준다
x_data = np.array(df[['Beer_PerCapita']], dtype=np.float32)
y_data = np.array(df['HappinessScore'], dtype=np.float32)
print(x_data.shape)
print(y_data.shape)
위의 x, y_data의 데이터의 값을 reshape 해준다
위에서 데이터를 출렸했을때 (122, )라고 나오는걸 (122, 1)로 바꾸어준다
x_data = x_data.reshape((-1, 1))
y_data = y_data.reshape((-1, 1))
print(x_data.shape)
print(y_data.shape)
데이터를 분할 해준다
학습 데이터 80%, 검증 데이터 20%
x_train, x_val, y_train, y_val = train_test_split(x_data, y_data, test_size=0.2, random_state=2021)
print(x_train.shape, x_val.shape)
print(y_train.shape, y_val.shape)
분할 후 출력 데이터를 1가지로 설정한다
model = Sequential([
Dense(1)
])
그리고 모델 구성에서
learning rate를 0.01로 설정해준다
model.compile(loss='mean_squared_error', optimizer=Adam(lr=0.01))
그 다음 model를 학습 시키기 위해 fit해준다
epichs = 100번 학습시킨다
model.fit(
x_train,
y_train,
validation_data=(x_val, y_val),
epochs=100
)
학습이 끝났으니까 예측해보자
y_pred = model.predict(x_val)
예측이 잘 됬는지 그래프로 보자
plt.scatter(x_val, y_val)
plt.scatter(x_val, y_pred, color='r')
plt.show()
예측값을 확인해 결과가 좋으면 원래 구하고자 했던 값을 print 한다
맥주 소비량이 1000일 때의 행복 지수 출력
y_pred = model.predict([[1000]])
print(y_pred)