파이썬/텐서플로우

tensorflow legression 유형 모델링 하기

공부짱짱열심히하기 2022. 12. 28. 11:47

데이터 확인:

 

목표 :성별 나이 연봉 카드 빚 자산으로 차량 가격 예측 인공지능 개발

 


1.nan데이터확인

2.X,y데이터 분리

3.분리된 X데이터에서 인코딩하기

4.피쳐스케일링 하기

분리된 X와y의 데이터의 범위가 완전 다르기 때문에 피쳐스케일링을 해줘야 하는데

이때 두개의 범위가 다다르니까 두개의 피쳐스케일러를 준비를 해줘야 한다.

scaler_X = MinMaxScaler()
X용
scaler_y = MinMaxScaler()
y용
X = scaler_X.fit_transform(X.values)
y.values.reshape(500,1)
y_scaled = scaler_y.fit_transform(y.values.reshape(500,1))

y는 시리즈 이기때문에 values로 바꿔준다음 진행

 

 

5.트레이닝 셋 나누기

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)

 

 


딥러닝 모델링

 

import tensorflow.keras
from keras.models import Sequential
from keras.layers import Dense
from sklearn.preprocessing import MinMaxScaler
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

loss나 metrics를 mse로 확인하는건 리그레션 문제이기때문이다.

 


학습하기

model.fit(X_train,y_train,batch_size = 10 , epochs = 20)

평가하기

 

model.evaluate(X_test,y_test)
y_pred = model.predict(X_test)

차이값 확인하고 mse계산 및 차트로 표현하기

error = y_test - y_pred
(error ** 2).mean()

아까 평가할때 나왔던 값과 똑같이 나옴

 

plt.plot(y_test)
plt.plot(y_pred)
plt.show()


새로운 데이터 넣을때

 

여자이고, 나이는 38, 연봉은 90000, 카드빚은 2000, 순자산은 500000 일때, 어느정도의 차량을 구매할 수 있을지 예측하시오.

남자이고, 나이는 27, 연봉은 30000, 카드빚은 10000, 순자산은 300000 일때, 어느정도의 차량을 구매할 수 있을지 예측하시오.

new_data = np.array( [  [  1,38,90000,2000,500000  ] ,[0,27,30000,10000,300000 ] ]   )
or
new_data = np.array( [   1,38,90000,2000,500000  ,0,27,30000,10000,300000 ]    )
new_data.reshape(2,5)

새로운x값의 스케일러 및 모델링 진행

new_data = scaler_X.transform(new_data)
y_pred = model.predict(new_data)
scaler_y.inverse_transform(y_pred)

y값이 스케일되어있으니까 다시 원상복구시켜서 우리들 단위로 바꿔준다.

 


1.nan데이터확인
2.X,y데이터 분리
3.분리된 X데이터에서 인코딩하기
4.피쳐스케일링 하기
5.트레이닝 셋 나누기