import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('Car_Purchasing_Data.csv', encoding='ISO-8859-1')
0. 데이터 확인
df.info()
df.describe()
1. nan이 있는지 확인
df.isna().sum()
2. 학습데이터 X와 정답데이터 y로 분리
X = df.loc[:, 'Gender':'Net Worth']
y = df['Car Purchase Amount']
3. X, y 모두 숫자 데이터이므로 인코딩 할 필요 없다.
4. feature scaling
from sklearn.preprocessing import MinMaxScaler
scaler_X = MinMaxScaler()
scaler_y = MinMaxScaler()
X = scaler_X.fit_transform(X.values)
y = scaler_y.fit_transform(y)
위 코드는 y가 1차원이기 때문에 ValueError가 발생한다.
y의 shape을 변경해 준다.
y.reshape(-1, 1)
이것도 많이 하는 실수인데, 판다스 시리즈는 reshape 메소드가 없어서 에러가 발생한다.
y대신 y.values를 reshape 해준다.
y.values.reshape(-1, 1)
y_scaled = scaler_y.fit_transform(y.values.reshape(-1, 1))
5. train, test 데이터 분리
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y_scaled, test_size=0.25, random_state=50)
6. 인공신경망 모델 연결하기
from keras.models import Sequential
from keras.layers import Dense
def build_model():
model = Sequential()
model.add(Dense(units=5, activation='relu', input_shape=(5,)))
model.add(Dense(units=25, activation='relu'))
model.add(Dense(units=10, activation='relu'))
model.add(Dense(units=1, activation='linear'))
model.compile(optimizer='adam', loss='mse', metrics=['mse', 'mae'])
return model
regression 모델의 output 활성화함수는 'linear'를 쓴다.
model = build_model()
7. 모델 학습
model.fit(X_train, y_train, batch_size=10, epochs=20)
8. 모델 평가
model.evaluate(X_test, y_test)
9. 실제 예측
new_data = np.array([0, 38, 90000, 2000, 500000, 1, 27, 30000, 10000, 300000])
new_data = new_data.reshape(2, 5)
new_data = scaler_X.transform(new_data)
y_pred = model.predict(new_data)
scaler_y.inverse_transform(y_pred)
이 인공지능을 서비스하려 할 때 필요한 파일은?
model, scaler_X, scaler_y
'Machine Learning > Deep Learning' 카테고리의 다른 글
Tensorflow - Validation(검증)을 사용하는 방법 (0) | 2022.12.29 |
---|---|
Tensorflow - Learning rate(학습률)을 설정하는 방법 (0) | 2022.12.29 |
Tensorflow - Grid Search 를 이용한, 최적의 하이퍼 파라미터 찾기 (0) | 2022.12.28 |
Tensorflow에서 학습시 batch size, step, epoch 란? (0) | 2022.12.28 |
Tensorflow - 이진 분류 문제의 인공신경망(ANN) (0) | 2022.12.28 |