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)