BigData/Python

DACON "오늘의 파이썬" 모델링

아라동 2022. 2. 2. 13:50
Lv1 모델링 1/6 python 파이썬 scikit-learn
scikit-learn 이란?
python을 대표하는 머신러닝 라이브러리이다.
오픈소스로 누구나 무료로사용이 가능하며 현재에도 꾸준히 개발이 이루어지고 있다.

 


 

Lv1 모델링 python 파이썬 2/6 모델개념(의사결정나무)
의사결정나무란?
스무고개 방식으로 구조화되는 것이다.
들은 피쳐를 가지고 있다. 이 중 하나의 피쳐에 특정한 하나의 값을 정한다면, 이를 기준으로
모든 행들을 두 개의 노드로 분류 할 수있다. 만약 피쳐에 2개의 값을 정한다면  3진분할이 될 것 이다. 

대표적인 의사 결정나무 CART 의사 결정나무는 이진 분할을 사용한다.

파생된 두 개의 노드에 또 다시 새로운 피쳐의 특정한 값을 정하고 분류한다.
이 과정의 반복을 통해 데이터들을 분류할 수 있다.

특정한 값을 정하는 의사결정 나무 대원칙은 "한쪽 방향으로 쏠리도록"이다.
분류될 떄 공평하게가 아닌 한쪽으로 쏠리도록 해줘 특정 값을 찾는 것이며, 이를 통해 불순도를 계산해 찾아낸다.

Lv1 모델링 python 파이썬 3/6 모델선언(의사결정나무)
sklearn.tree 에서 DecisionTreeRegressor 모듈을 불러올 것입니다.(모델 선언하기)

 

DecisionTreeRegressor 모듈을 불러오기

 


 

Lv1 모델링 python 파이썬 4/6 모델훈련 (의사결정나무)
fit(X, Y) 함수를 사용해서 모델을 훈련시킬 수 있다.

주의점 1.X 데이터는 예측에 사용되는 변수
             2. Y 데이터는 예측결과 변수
X 데이터는 train data 에서 drop([‘제목’], axis=1) 함수를 이용해 예측할 피쳐를 제외할 수 있다.
Y 데이터는 train[‘제목'] 으로 인덱싱할 수 있다.
      X_train = train.drop(['제목'},axis==1)
      y_train = train['제목']

이제 모델을 선언하고, fit() 함수를 이용해 모델을 훈련시킬 수 있습니다.
      model = DecistionRegressor()
      model.fit(X_train,y_train)

모델 적용시키기

 


 

Lv1 모델링 python 파이썬 5/6 테스트예측
훈련된 모델에서 predict() 매서드에 예측하고자 하는 data 를 넣어주면 해당 결과 array 를 할당할 수 있다.

모델에서 예측한 데이터를 생성하고 상위 5개를 출력해라

 


 

Lv1 모델링 6/6 python 파이썬 to_csv() (제출파일생성)
import zipfile
with zipfile.ZipFile('3gLj0Q6', 'r') as existing_zip:    
     existing_zip.extractall('data')
import pandas as pd
from sklearn.tree import DecisionTreeRegressor
train = pd.read_csv('data/train.csv') 
test = pd.read_csv('data/test.csv')
test = test.fillna(0)
train = train.dropna()
print(train.isnull().sum())
X_train = train.drop(['count'], axis=1)
Y_train = train['count']
model = DecisionTreeRegressor()
model.fit(X_train, Y_train)
pred = model.predict(test)
submission = pd.read_csv('data/submission.csv')
submission['count'] = pred
submission.to_csv('sub.csv',index=False)