"랜덤포레스트(with Scikit-learn)"의 두 판 사이의 차이
둘러보기로 가기
검색하러 가기
(→방법) |
|||
(같은 사용자의 중간 판 2개는 보이지 않습니다) | |||
37번째 줄: | 37번째 줄: | ||
from sklearn.enssemble import RandomForestClassifier | from sklearn.enssemble import RandomForestClassifier | ||
− | machine = RandomForestClassifier(random_state=13) # 객체 지정 | + | machine = RandomForestClassifier(max_leaf_nodes=500, random_state=13) # 객체 지정 |
machine.fit(data, label) # 데이터와 레이블 지정하여 학습 실행. | machine.fit(data, label) # 데이터와 레이블 지정하여 학습 실행. | ||
</syntaxhighlight>machine에 대해 다양한 파라미터가 있는데, 이는 상황에 따라 활용. | </syntaxhighlight>machine에 대해 다양한 파라미터가 있는데, 이는 상황에 따라 활용. | ||
+ | {| class="wikitable" | ||
+ | !파라미터 | ||
+ | !설명 | ||
+ | |- | ||
+ | |max_leaf_nodes | ||
+ | |노드를 만드는 제한은 몇으로 할 것인지.(과적합 방지) | ||
+ | (근데 이거 랜덤포레스트에서 쓰는 거 맞나? 의사결정트리 아니고?) | ||
+ | |- | ||
+ | |n_estimators | ||
+ | | | ||
+ | |- | ||
+ | |random_state | ||
+ | |자료들을 섞을 때 random함수에 동일한 seed를 주어 매번 똑같은 결과를 얻게 하기 위함.(검증용) | ||
+ | |} | ||
|- | |- | ||
|예측 | |예측 | ||
46번째 줄: | 60번째 줄: | ||
data_for_predict = df..... # 위에서 만든 판단근거와 동일한 형태의 df를 넣어준다. | data_for_predict = df..... # 위에서 만든 판단근거와 동일한 형태의 df를 넣어준다. | ||
machine.predict(data_for_predict) | machine.predict(data_for_predict) | ||
− | </syntaxhighlight>가격을 예측할 때 넣는 판단근거의 df는 1행만 | + | </syntaxhighlight>가격을 예측할 때 넣는 판단근거의 df는 1행만 넣어줘도 되고, 여러 행을 넣으면 리스트로 결과가 반환된다. |
+ | |- | ||
+ | | | ||
+ | | | ||
+ | | | ||
+ | |} | ||
+ | |||
+ | == 후처리 == | ||
+ | {| class="wikitable" | ||
+ | !절차 | ||
+ | !설명 | ||
+ | !방법 | ||
+ | |- | ||
+ | |검증 | ||
+ | |정확도가 얼마나 되는지 검증한다. | ||
+ | |||
+ | |||
+ | 훈련데이터와 검증데이터의 분류는 [[Scikit-learn]]문서를 참고하자. | ||
+ | |||
+ | 여기선 평균 오류값을 구하는 예시를 두었다. | ||
+ | |<syntaxhighlight lang="python"> | ||
+ | from sklearn.metrics import mean_absolute_error | ||
+ | |||
+ | new_data = df..... # 테스트에 쓰일 df. | ||
+ | y = new_data.판단할열 # 실제 결과 | ||
+ | # 근거데이터 만들기. | ||
+ | features = ['열1', '열2', ...] # 판단할 자료가 될 열을 지정한다. | ||
+ | x = new_data[features] # 판단근거를 준비한다. | ||
+ | |||
+ | predict = machine.predict(new_data) # 결과 예상하기. | ||
+ | mean_absolute_error(predict, y) # 예상결과와 실제값을 비교하여 평균 에러를 반환한다. | ||
+ | </syntaxhighlight> | ||
|} | |} | ||
+ | |||
+ | === 오버피팅 방지 === | ||
[[분류:랜덤포레스트]] | [[분류:랜덤포레스트]] | ||
[[분류:Scikit-learn]] | [[분류:Scikit-learn]] |
2021년 9월 3일 (금) 22:44 기준 최신판
1 개요[편집 | 원본 편집]
사이킷런으로 랜덤포레스트를 만들 수 있다.
2 방법[편집 | 원본 편집]
절차 | 설명 | 방법 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|
데이터 정리 | 데이터를 불러오고 정리한다. | import pandas as pd
file_path = "..path"
data = pd.read_csv(file_path) # 필요한 자료를 불러온다. 혹은 df자료를 만든다.
data = data.dropna(axis=0) # 해당 축에 대해 빈 자료가 있는 행을 버린다.
| ||||||||
예측할 데이터 선정 | 어떤 값을 예측할지 판단 근거와 분리한다. | # 레이블 만들기.
y = data.판단할열 # 판단결과가 될 열을 지정한다.(해당 열을 시리즈로 반환.)
# 근거데이터 만들기.
features = ['열1', '열2', ...] # 판단할 자료가 될 열을 지정한다.
x = data[features] # 판단근거를 준비한다.
| ||||||||
패키지 불러오기 및 데이터 입력
+ 학습 |
데이터를 입력한다.
일반적으로 machine이라는 이름보다, classifier의 약자인 clf를 주로 쓴다. |
from sklearn.enssemble import RandomForestClassifier
machine = RandomForestClassifier(max_leaf_nodes=500, random_state=13) # 객체 지정
machine.fit(data, label) # 데이터와 레이블 지정하여 학습 실행.
| ||||||||
예측 | 판단근거를 넣어주면 예측값을 돌려준다. | data_for_predict = df..... # 위에서 만든 판단근거와 동일한 형태의 df를 넣어준다.
machine.predict(data_for_predict)
| ||||||||
3 후처리[편집 | 원본 편집]
절차 | 설명 | 방법 |
---|---|---|
검증 | 정확도가 얼마나 되는지 검증한다.
여기선 평균 오류값을 구하는 예시를 두었다. |
from sklearn.metrics import mean_absolute_error
new_data = df..... # 테스트에 쓰일 df.
y = new_data.판단할열 # 실제 결과
# 근거데이터 만들기.
features = ['열1', '열2', ...] # 판단할 자료가 될 열을 지정한다.
x = new_data[features] # 판단근거를 준비한다.
predict = machine.predict(new_data) # 결과 예상하기.
mean_absolute_error(predict, y) # 예상결과와 실제값을 비교하여 평균 에러를 반환한다.
|