작성
·
58
0
안녕하세요
저번에 평가하지 않고 랜덤포레스트 한개로만 제출한다고 했을 때에
그러면은 인코딩까지 동일하게 하고
rf.fit(X_tr, y_tr)을
rf.fit(train, target)으로 바꾸고
pred = rf.predict(X_val)을
pred = rf.predict(test)로 바꿔서
target = train.pop('농약검출여부')
train = pd.get_dummies(train)
test = pd.get_dummies(test)
train, test = train.align(test, axis=1, join='left', fill_value=0)
from sklearn.ensemble import RandomForestClassifier
-------------------------------------
rf = RandomForestClassifier(random_state=0)
rf.fit(train, target)
pred = rf.predict(test)
result = pd.DataFrame({'pred':pred})
result.to_csv('result.csv',index=False)
랜덤포레스트 기준 요런식으로 작성하면 되는지 궁금합니다.
글구 쌤께서 target = train.pop할때 항상 인코딩하기 전에 하는데 이유가 있는지 궁금합니다!
항상 이해 잘되게 가르쳐 주셔서 감사드립니다. 선생님
답변 1
0
네 맞아요
target을 미리 빼는 이유는 만약에 타겟이 문자일 때
위와 같이 인코딩을 해버리면 traget컬럼도 함께 인코딩 됩니다.
target에 A, B, C가 있는데 원핫 인코딩을 하면
target_A, target_B, target_C와 같이 3개의 컬럼으로 변경되버리죠
오 그렇군요 감사합니다!