Hailey's TIL
머신러닝 - 모델링 기초 본문
라이브러리와 데이터를 불러와 머신러닝 모델링을 진행해보자!
# 라이브러리 불러오기
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 |