Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
| 29 | 30 | 31 |
Tags
- Dictionary
- sklearn
- 최솟값
- numpy
- analizer
- len()
- matplotlib
- DataFrame
- hierarchical_clustering
- list
- wcss
- count()
- dendrogram
- nan
- 덴드로그램
- function
- pandas
- append()
- string
- elbow method
- IN
- 분류 결과표
- Python
- 반복문
- 최댓값
- Machine Learning
- insert()
- data
- DataAccess
- del
Archives
- Today
- Total
개발공부
텐서플로우로 리그레션(Regression) 문제 모델링 하는 방법 실습 본문
Car_Purchasing_Data.csv
0.06MB
다음과 같은 컬럼을 가지고 있는 데이터셋을 읽어서, 어떠한 고객이 있을때, 그 고객이 얼마정도의 차를 구매할 수 있을지를 예측하여, 그 사람에게 맞는 자동차를 보여주려 한다.
- Customer Name
- Customer e-mail
- Country
- Gender
- Age
- Annual Salary
- Credit Card Debt
- Net Worth (순자산)
예측하고자 하는 값 :
- Car Purchase Amount
csv파일을 읽어온다.
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv('data/Car_Purchasing_Data.csv', encoding='ISO-8859-1')
df

NAN값이 있는지 확인한다.
df.isna().sum()

X를 설정한다.
X = df.iloc[:, 3: -2+1]
X

y를 설정한다.
y = df['Car Purchase Amount']
피처 스케일링한다.
from sklearn.preprocessing import MinMaxScaler
sc_X = MinMaxScaler()
X_scaled = sc_X.fit_transform(X)
X_scaled

y.shape
>> (500,)
y는 1차원이기 때문에 2차원 어레이로 변경한 후 피처 스케일링 한다.
y = y.values.reshape(500, 1)
sc_y = MinMaxScaler()
y_scaled = sc_y.fit_transform(y)
트레이닝 세트와 테스트 세트로 분리한다.
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X_scaled, y_scaled, test_size=0.2, random_state= 11 )
모델을 생성한다.
import tensorflow.keras
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('adam', 'mse')
return model
model = build_model()
model.summary()

만든 모델을 학습시킨다.
epoch_history = model.fit(X_train, y_train, epochs = 20, batch_size = 10)

테스트 세트로 예측해보자.
y_pred = model.predict(X_test)
실제값과 예측값의 분포를 차트로 나타내보자.
plt.plot(y_test, c='b')
plt.plot(y_pred, c='r')
plt.show()

MSE를 계산해보자.
>>> ((y_test - y_pred)**2).mean()
0.0004711302668406312
새로운 데이터를 가지고 예측을 해보자.
여자이고, 나이는 38, 연봉은 90000, 카드빚은 2000, 순자산은 500000 일때
어느정도의 차량을 구매할 수 있을지 예측하시오.
위의 데이터를 X의 모양과 맞추면 아래와같다.
new_data = np.array([0, 38, 90000, 2000, 500000])
new_data = new_data.reshape(1,-1)
피처 스케일링하자.
new_data = sc_X.transform(new_data)
예측해보자.
y_pred = model.predict(new_data)
y_pred = sc_y.inverse_transform(y_pred)
y_pred[0,0]

'Python > Deep Learning' 카테고리의 다른 글
| Validation, validation_split, validation data 코드 예제 (0) | 2022.06.13 |
|---|---|
| Learning Rate를 옵티마이저에서 셋팅하는 코드 (0) | 2022.06.13 |
| 텐서플로우를 이용한 그리드 서치하는 방법 (0) | 2022.06.13 |
| 텐서플로우로 분류(Classification)의 문제 모델링 하는 방법 실습 (0) | 2022.06.10 |
| 텐서플로우에서 학습시 epochs 와 batch_size 이란? (0) | 2022.06.10 |