드레:
코딩 뿌시기
드레:
전체 방문자
오늘
어제
  • 분류 전체보기 (268)
    • Python (74)
      • Python 기초 (42)
      • Numpy (8)
      • Pandas (22)
    • Machine Learning (31)
      • Machine Learning (1)
      • Deep Learning (27)
    • AWS (22)
      • RDS (3)
      • EC2 (9)
      • Lambda (8)
      • S3 (2)
    • MySQL (24)
    • Git (8)
    • Streamlit (12)
    • REST API (22)
    • Java (24)
    • Android (36)
    • Debugging (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • aws s3
  • Retrofit2
  • API
  • Python
  • pandas
  • Callback
  • rest api
  • JWT
  • AWS
  • fine tuning
  • Lambda
  • 네이버 API
  • volley
  • serverless
  • github
  • CNN
  • flask
  • 서버리스
  • 액션바
  • 안드로이드 스튜디오
  • Java
  • AWS Lambda
  • EC2
  • GET
  • Streamlit
  • tensorflow
  • Transfer Learning
  • 깃이그노어
  • Ann
  • 딥러닝

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
드레:

코딩 뿌시기

머신러닝 - Linear Regression 으로 수치 예측
Machine Learning

머신러닝 - Linear Regression 으로 수치 예측

2022. 12. 7. 23:28

 

linear regression 을 이용해 수치예측하는 방법을 알아보겠다.

 

auto-mpg.csv
0.02MB

 

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

df = pd.read_csv('../data/auto-mpg.csv')

 

컬럼정보

  • mpg : 연비
  • cyl : 실린더 갯수
  • displ : 배기량
  • hp : 마력
  • weight : 무게
  • accel : 60mph 까지 걸리는 시간
  • yr : 연식
  • origin : origin of car (1. American, 2. European, 3. Japanese)

 

# 1. 데이터 파악
df.head()
df.info()
df.describe()

 

# 2. nan 확인
df.isna().sum()

 

name 컬럼을 제외한 나머지 데이터들로 연비를 예측하겠다.

# 3. X 와 y로 분리

X = df.loc[ : , 'cyl':'origin']
y = df['mpg']

 

df['origin'].unique()
df['cyl'].unique()
df['yr'].unique()

origin, cyl, yr 컬럼은 카테고리컬 데이터이다.

origin 컬럼은 카테고리가 3개이기 때문에 학습이 더 잘 되도록 원핫인코딩으로 변환해주겠다.

cyl, yr은 수치이기 때문에 학습에 영향을 줄 수 있을 것 같으므로 그대로 둔다.

 

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer

ct = ColumnTransformer( [ ('encoder', OneHotEncoder(), [6]) ],
                      remainder = 'passthrough')

X = ct.fit_transform(X.values)

 

# 4. train set, test set 분리
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2 , random_state=1)

 

# 5. feature scaling
# 여기서 사용할 LinearRegression은 자체적으로 피쳐스케일링을 해주기 떄문에 패스한다.

 

# 6. linear regression으로 모델링

from sklearn.linear_model import LinearRegression

regressor = LinearRegression()
# 학습
regressor.fit(X_train, y_train)
regressor.coef_  # 기울기
regressor.intercept_  # 절편

 

# 7. 예측
y_pred = regressor.predict(X_test)

 

# 8. MSE로 평가
from sklearn.metrics import mean_squared_error

mean_squared_error(y_test, y_pred)

 

 

실제값과 예측값이 얼마나 차이 나는지 보기 쉽게 차트로 시각화 해보자.

 

plt.plot(y_test.values)
plt.plot(y_pred)
plt.legend(['Real', 'Pred'])
plt.show()

 

내가 만약 실제로 이 인공지능을 deploy(배포) 하려면,

학습이 완료된 모델을 저장, 불러오기 하고 실제 예측까지 구현해야 한다.

아래 코드로 확인해보자.

 

# One-Hot encoding column transformer 와 linear regression 모델을 파일로 저장하기
import joblib

joblib.dump(ct, 'ct.pkl')
joblib.dump(regressor, 'regressor.pkl')
# 저장한 모델 불러오기
ct2 = joblib.load('ct.pkl')
regressor2 = joblib.load('regressor.pkl')
# 새로운 자동차가 나왔습니다.
# displ 301, hp 133, cyl 6, weight 2900, accel 10.7, yr 81, origin2(유럽차)
# 이 차의 연비를 예측해 보세요.

new_car = np.array([6, 301, 133, 2900, 10.7, 81, 2]).reshape(1, -1) # 2차원으로
new_car = ct2.transform(new_car)
regressor2.predict(new_car)

'Machine Learning' 카테고리의 다른 글

데이터 전처리 - 결측값 처리, 피처 스케일링, train_test_split  (0) 2022.12.05
데이터 전처리 - Categorical Encoding  (0) 2022.12.05
    'Machine Learning' 카테고리의 다른 글
    • 데이터 전처리 - 결측값 처리, 피처 스케일링, train_test_split
    • 데이터 전처리 - Categorical Encoding
    드레:
    드레:

    티스토리툴바