Hailey's TIL

머신러닝 - 모델링 기초 본문

AI

머신러닝 - 모델링 기초

0_hailey_0 2024. 3. 13. 20:02

라이브러리와 데이터를 불러와 머신러닝 모델링을 진행해보자!

# 라이브러리 불러오기
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings

warnings.filterwarnings(action='ignore')
%config InlineBackend.figure_format = 'retina'

# 데이터 읽어오기
path = 'airquality_simple.csv'
data = pd.read_csv(path)

 

1. 데이터 탐색

모델링할 대상인 데이터를 탐색해보자!

# 상위 몇 개 행 확인
data.head()

# 하위 몇 개 행 확인
data.tail()

# 변수 확인
data.info()

# 기술통계 확인
data.describe().T

# 상관관계 확인
data.corr()

# 상관관계 시각화
sns.heatmap(data.corr(numeric_only=True),
           annot= True,
           cmap ='Blues',
           cbar = False,
           square = True,
           fmt = '.2f',
           annot_kws = {'size' : 9})
plt.show()

 

 

2. 데이터 전처리 

 

1) 결측치 처리

결측치가 있으면 제거하거나 적절한 값으로 채운다.

# 결측치 확인
data.isna().sum()

# 전날 값으로 결측치 채우기
data.fillna(method = 'ffill')
# 확인
data.isna().sum()

 

2) 변수 제거

분석에 의미가 없다고 판단되는 변수는 제거한다.

# 변수 제거
drop_cols=['Month', 'Day']
data.drop(drop_cols, axis=1, inplace= True)

 

3) x, y 분리

  • 우선 target 변수를 명확히 지정한다.
  • target을 제외한 나머지 변수들 데이터는 x로 선언한다.
  • target 변수 데이터는 y로 선언한다.
  • 이 결과로 만들어진 x는 데이터프레임, y는 시리즈가 된다.
  • 이후 모든 작업은 x, y를 대상으로 진행한.
# target 확인
target = 'Ozone'

# 데이터 분리
x = data.drop(target, axis =1)
y = data.loc[:, target]

 

4) 학습용, 평가용 데이터 분리

  • 학습용, 평가용 데이터를 적절한 비율로 분리한다.
  • 반복 실행 시 동일한 결과를 얻기 위해 random_state 옵션을 지정한다.
# 모듈 불러오기
from sklearn.model_selection import train_test_split

# 7:3으로 분리
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.3, random_state = 1)

 

 

 

3. 모델링

  • 본격적으로 모델을 선언하고 학습하고 평가하는 과정
  • 우선 회귀 문제인지 분류 문제인지 명확히 구분이 필수이다.

 

1) 모델링

  • 알고리즘: LinearRegression
  • 평가방법: mean_absolute_error
# 1단계: 불러오기
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error

# 2단계: 선언하기
model = LinearRegression()

# 3단계: 학습하기
model.fit(x_train, y_train)

# 4단계: 예측하기
y_pred = model.predict(x_test)

# 5단계: 평가하기
print('MAE:',mean_absolute_error(y_test, y_pred))

# 실젯값, 예측값
print(y_test.values[:10])
print(y_pred[:10])

# 시각화
plt.plot(y_test.values, label = 'Actual')
plt.plot(y_pred, label = 'Predicted')
plt.legend()
plt.show()

 

 

[4주차 01]

'AI' 카테고리의 다른 글

머신러닝 - 성능평가  (0) 2024.03.13
머신러닝 - 데이터 전처리  (0) 2024.03.13
웹 크롤링 2  (0) 2024.03.09
웹 크롤링 1  (0) 2024.03.07
데이터 분석 및 의미 찾기 2  (0) 2024.02.29