작성
·
60
0
#train['환불금액']=train['환불금액'].drop
#test['환불금액']=test['환불금액'].drop
train=pd.get_dummies(train)
test=pd.get_dummies(test)
target=train.pop('성별')
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=0)
from sklearn.ensemble import RandomForestClassifier
model=RandomForestClassifier(random_state=0)
model.fit(X_tr,y_tr)
pred=model.predict(test)
submit=pd.DataFrame({'pred':pred})
submit.to_csv('result.csv',index=False)
a=pd.read_csv('result.csv')
print(a.head())
위와 같이 한가지방법으로 풀기와 동일하게 진행하였는데 model.fit(X_tr,y_tr) 에서 오류가 납니다. 결측치가 있는 '환불금액'열을 삭제해도 동일한데 한가지방법으로 푸는 코드에 오류나 잘못된 부분이 있을가요?.
답변 3
0
target=train.pop('성별')
df=pd.concat([train,test])
df=pd.get_dummies(df)
train=df.iloc[:3500,] #1번방식
test=df.iloc[3500:,] #1번방식
2번방식# train=df.iloc[:len(train)]
2번방식# test=df.iloc[len(train):]
확인차 재문의 드리면 위와 같이 1번/2번방식으로 진행하면 되는걸까요?
'인코딩이 안될때' 강의에서 2번에 해당한다하셨는데 문제에서는 포함되는지 여부는 언급이 없고 '성별'열만 test에 없다고 되어있는데 2번 방식이라 하셔서요('train'범주형 컬럼이 'test'를 포함한다)
세가지로 구분하신 방식이 어떤 데이터가 큰지/합집합인지 등 구분이 안되는데 구분방법이 궁금합니다.
마지막으로 '인코딩이 안될때' 강의에서 3가지 케이스 모두다 숙지하고 있어야 되나요? 원핫 말고 레이블인코딩은 잘모르겠습니다
0
작업형2 한가지 방법으로 풀기는 기출에서 통한 방법이었어요
(8회에서도 통했지만 본 강의 에서는 문제는 조금 어렵게 출제했어요)
예시문제는 데이터가 어렵게 출제 되었어요 강의영상을 보면 알겠지만 train의 특정 컬럼에서 1개의 카테고리가 더 있어요
pd.get_dummies를 사용하려면 train과 test를 합친후 진행해야 합니다.
꿀팁 - 인코딩에서 에러가 발생한다면 영상 참고
0
안녕하세요, 인프런 AI 인턴입니다. hankilzoa님의 질문에 답변드리겠습니다.
문의하신 내용을 기반으로 오류가 발생할 수 있는 몇 가지 요소와 이에 대한 해결 방법을 안내드리겠습니다. 일반적으로 model.fit(X_tr, y_tr)
에서 오류가 발생하는 원인은 주로 입력 데이터에 맞지 않는 형식입니다. 특히, train
혹은 target
데이터에 결측치가 존재하는 경우 오류가 발생할 수 있습니다.
결측치 확인 및 처리:
train
와 target
데이터에 결측치가 있는지 확인해 보세요. 결측치를 제어하지 않으면 모델 학습 시 오류가 발생할 수 있습니다.train.isnull().sum()
및 target.isnull().sum()
을 사용하여 결측치를 확인하고, 필요시 fillna
또는 특정 열을 삭제하여 결측치를 처리하세요.데이터 프레임 셰이프 확인:
train
와 target
의 길이가 일치하는지 확인하세요. 만약 한 행이라도 누락된다면 레이블 데이터의 길이가 입력 데이터의 길이와 맞지 않아 학습이 불가능할 수 있습니다.assert len(train) == len(target)
를 통해 길이를 확인하세요.범주형 변환 확인:
pd.get_dummies(train)
및 pd.get_dummies(test)
에서 train 데이터와 test 데이터셋에 대해서는 get_dummies
를 적용, 이후 컬럼 간 차이를 초래하지 않도록 했는지 확인하세요. 두 데이터셋에 모두 존재할 수 있는 동일한 컬럼에 대해 원핫 인코딩을 수행했는지 점검 필요합니다.데이터 분할:
sklearn.model_selection.train_test_split
메서드를 통해 데이터를 실제 학습 및 검증 데이터로 분할할 때, 데이터의 전/후 셰이프와 명확하게 분할되었는지 체크하세요.X_tr, X_val, y_tr, y_val
이 분할된 데이터가 올바르게 분리되었는지, 데이터의 타입이 깨지지 않았는지도 점검해야 합니다.본 문제와 유사한 경우를 다룬 기존 게시글이 있어 추천드립니다. 이러한 오류 해결 절차를 포함한 더 자세한 정보를 얻고자 하면, 다음 링크의 게시글을 참고해보세요:
- 예시문제 작업형2 신버전
- 작업형 2 모의문제 2번
특히 훈련 및 검증 오류 관련하여 모델 학습 시 자주 발생하는 착오를 피할 수 있는 유용한 조언을 얻으실 수 있을 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.