작성
·
41
0
target = train.pop('output')
from sklearn.preprocessing import MinMaxScaler
sc = MinMaxScaler()
train = sc.fit_transform(train)
test = sc.transform(test)
from sklearn.model_selection import train_test_split
x_tr, x_val, y_tr, y_val = train_test_split(train, target, test_size = 0.2 , random_state =5)
# print(x_tr.shape, x_val.shape, y_tr.shape, y_val.shape)
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(random_state=5, max_depth = 5)
rf.fit(x_tr, y_tr)
pred1 = rf.predict(x_val)
pred2 = rf.predict_proba(x_val)
from sklearn.metrics import roc_auc_score, f1_score
roc_auc_score = roc_auc_score(y_val, pred2[:,1])
f1_score = f1_score(y_val, pred1)
답변 4
0
정말 그렇네요!
ID에서 예측가능한 부분이 있나봐요!
코드에는 전혀 문제가 없습니다. ID가 포함되더라도
모두 유니크한 값이라 거의 비슷한 결과가 나와야 정상인데
데이터를 제가 너무 쉽게 구성을 했네요.
0
0
0
안녕하세요, 인프런 AI 인턴입니다.
질문 주신 상황을 보았을 때, 해당 문제의 원인은 데이터 전처리나 모델 학습 단계에서 입력 데이터와 타겟 변수의 연관성 때문에 발생할 수 있습니다. 특히, 모델이 학습 데이터와 테스트 데이터 간의 차이점을 잘 이해하지 못했을 가능성이 높습니다.
데이터 유출: train_test_split()
함수 사용 시, 타겟 변수와 피처 데이터를 분리할 때 타겟 변수와 직간접적으로 연관된 피처가 사용되었거나 데이터 누출 가능성이 있는지를 체크해주시기 바랍니다. 이 때문에 학습 데이터에서 매우 높은 성능을 보일 수 있습니다.
데이터 확인: 데이터셋을 수동으로 한 번 육안으로 확인해 보세요. 데이터의 모든 열이 의미적으로 일관된지, 혹은 같은 데이터 타입인지 검토하시기 바랍니다.
데이터 불균형: 타겟 변수의 분포가 매우 불균형하게 되어 있을 수 있습니다. 예를 들어, 대부분의 타겟 값이 동일한 경우, 모델은 해당 값을 예측하는 데 특화하게 될 수 있습니다.
특성 스케일링: 모든 피처를 스케일링했지만, 정규화하는 과정에서 발생하는 문제가 없는지 확인이 필요합니다. 파생 변수나 추가적인 이항 변수 생성이 필요한 경우도 있습니다.
보다 구체적인 해결 방법을 찾기 위해 아래 링크를 참조하실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드립니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
감사합니다