[머신러닝] Scikit-Learn 모델링 코드 구조 및 과정

2024. 9. 26. 22:30·Dev/머신러닝

Sklearn (사이킷런)

지도/ 비지도 학습 알고리즘을 제공하는 대표적인 파이썬 라이브러리

 

- 오픈소스로서 누구나 무료로 사용가능

- 여러 알고리즘을 같은 구조의 코드로 사용할 수 있음

- 다양한 예제 데이터셋(토이 데이터 셋)을 포함하고 있음 ex) Iris, Boston

 

1. 환경 준비

기본 라이브러리와 대상 데이터를 불러오기

 

라이브러리 불러오기

# 라이브러리 불러오기
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 = 'https://raw.githubusercontent.com/Jangrae/csv/master/airquality_simple.csv'
data = pd.read_csv(path)

 

2. 데이터 이해

** 좋은 모델을 위해 좋은 데이터는 필수임

** 충분히 탐색하고 적절히 전처리 해야함!

 상위 데이터, 하위데이터, 변수, 기술통계, 상관관계 확인

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

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

# 변수 확인
data.info()

# 변수 확인
data.info()

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

# 상관관계 확인 방법1
data.corr()

# 상관관계 확인 방법2 
tmp = data.corr(numeric_only=True)
#numeric_only : 문자열 말고 수치형만 보여주기

tmp.style.background_gradient()

#상관관계 확인 방법3 (히트맵)
sns.heatmap(data.corr(numeric_only= True),
           annot= True,
           cmap='Blues',
           cbar=False,
           square=True,
           fmt='.3f',
           annot_kws={'size':8})
plt.show()

3. 데이터 준비 

전저리 과정을 통해 머신러닝 알고리즘에 사용할 수 있는 형태의 데이터로 바꿈.

결측치 처리

결측치를 제거하거나 적절한 값으로 대체

# 결측치 확인
data.isna().sum()
# 전날 값으로 결측치 채우기
# data.fill(inplace=True)
data.interpolate(method='nearest',inplace=True)

# 확인
data.isna().sum()

#결측치가 채워지지 않은 것은 있나? 
# 예를 들어 비워져있는 놈들 사이에서 가운데 있는 놈은 어떤 값으로 채워질까?
# 거리가 같으면 앞값을 우선 선택함?

변수 제거

분석에 의미가 없으면 변수 제거 

# 변수 제거

drop_cols = ['Month','Day']
data.drop(columns=drop_cols,inplace=True) 
#data = data.drop(colums=drops_cols,inplace=True)# inplace는 =과 같이 쓰일 수 없음
# 확인

data.head()

x,y 분리

- target 변수를 명확히 지정, 이외의 변수는 x로 선언 -> df 

- tager 변수 데이터 y로 선언 -> 시리즈

# target 확인
target = 'Ozone'

# 데이터 분리
x= data.drop(columns=target) #inplace = false가 기본값임 -> 결과값만 반환되고 데이터로 받지 않음
#우리의 목표는 데이터를 변경시키는 것이 아니라 x만 결과값을 가르키게 하는 것
#x=data.drop(target,axis=1)
y= data['Ozone']

#y= data.loc[:,target] 생략하지 않고 쓰는 법
x.head() #df

x 값 확인

y.head() #시리즈

y 값 확인

 

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

# 모듈 불러오기
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)
#x_train과 행수가 같은건 y_train

#train_test_split 은 랜덤하게 데이터를 섞고 자르는거임 - > 그래서 결과가 다 다름 
#같은 평가 데이터로 보려면 randaom_state 사용해서 같은 숫자를 주면 됨 
# x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=1)

 

4. 모델링

- 회귀 문제/ 분류 문제인지 체크 -> 알고리즘, 평가 방법 선택

불러오기

- 사용할 알고리즘과 평가를 위한 함수 import

# 1단계: 불러오기
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error   #평가는 여기서 다 불러옴

선언하기

- 사용할 알고리즘용 함수로 모델 선언

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

학습하기

- 모델 학습 시키기

# 3단계: 학습하기
#x_train 에 대한 정답인 y_train을 줘야함

model.fit(x_train,y_train)

예측하기

- 예측한 결과 변수로 저장

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

 

평가하기

-실젯값과 예측값을 평가 함수에 전달하여 성능 평가

 

# 5단계: 평가하기
mean_absolute_error(y_test, y_pred)
#실젯값, 예측값
# print('실젯값',y_test) #시리즈
print('실젯값',y_test.values[:10]) #values -> 값만 뽑아줌  : array 

print('예측값',y_pred[:10])

 

 

+추가) 시각화

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

'Dev > 머신러닝' 카테고리의 다른 글

[머신러닝] 성능 평가  (0) 2024.10.04
[머신러닝] 머신 러닝의 이해와 개념  (0) 2024.09.26
'Dev/머신러닝' 카테고리의 다른 글
  • [머신러닝] 성능 평가
  • [머신러닝] 머신 러닝의 이해와 개념
#코딩 공부
#코딩 공부
tildacoding 코딩 공부
  • #코딩 공부
    tildacoding
    #코딩 공부
  • 전체
    오늘
    어제
  • 글쓰기 관리자
  • Personal

    • 홈
    • 태그
    • 방명록
  • link

    • GITHUB
    • 분류 전체보기 (48)
      • Dev (12)
        • python (0)
        • 웹크롤링 (2)
        • 머신러닝 (3)
        • 딥러닝 (4)
        • 언어지능 딥러닝 (2)
        • SQL (1)
        • Spring (0)
      • 코딩테스트 (16)
        • 백준 (3)
        • 프로그래머스 (7)
        • 기타 문제 (2)
        • 코딩테스트를 위한 정리 (4)
      • Study (4)
        • 알고리즘 (2)
        • 자료구조 (2)
      • 대외활동 (15)
        • 에이블스쿨 (15)
        • 공모전 (0)
  • 공지사항

    • 루틴 skrrrrr
  • 인기 글

  • 태그

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.0
#코딩 공부
[머신러닝] Scikit-Learn 모델링 코드 구조 및 과정
상단으로

티스토리툴바