작성
·
42
0
# X_train.head()
# y_train.head()
# X_train.info()
# y_train.info()
# X_train.isnull().sum()
# y_train.isnull().sum()
# y_train['Survived'].value_counts()
# print(X_train.shape, y_train.shape)
# X_train = pd.get_dummies(X_train)
# y_train = pd.get_dummies(y_train)
# print(X_train.shape, y_train.shape)
# target = y_train.pop('Survived')
# from sklearn.model_selection import train_test_split
# X_tr, X_val, y_tr, y_val = train_test_split(X_train, target, test_size=0.2, random_state=0)
# print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape)
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(random_state=0)
rf.fit(X_tr, y_tr)
pred = rf.predict(X_val)
다음과 같이 풀이했는데 오류가 뜨는 이유가 뭘까요?
그리고 target = y_train.pop['Survived']를 데이터 전처리 때 하는 게 좋을까요 데이터 분리를 할 때 하는 게 좋을까요?
한 셀에서 풀이를 하면 target = ~ 이 셀이 두 번 반복되는데 그럼 다시 오류가 떠서 미리 실행시키고 다음 단계 전에는 숨기기 처리하는게 맞겟죠?
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. shs4166님께서 제시하신 코드에서 발생하는 오류와 관련하여 몇 가지 점검할 사항을 안내해드리겠습니다.
오류가 발생한 부분:
rf.fit(X_tr, y_tr)
코드에서 오류가 발생하는 경우, 주로 데이터형태 불일치 또는 결측치 때문일 수 있습니다. X_tr
, y_tr
의 데이터 타입을 확인하고, 결측치가 없는지 확인해주세요.y_tr
의 형태가 (n_samples,)
로 되어있는지 확인해주세요. 다차원인 경우 ravel()
을 사용하여 1차원으로 변환하세요.데이터 전처리 타이밍:
target = y_train.pop('Survived')
와 같은 코드는 데이터 전처리 초기 단계에서 수행하는 것이 좋습니다. 이유는 타겟 변수를 분리하여 이후 전처리 작업에서 실수로 조작되는 것을 방지하기 위해서입니다.pop
메소드는 데이터프레임에서 열을 제거하므로, 코드 실행 순서가 잘못되면 오류가 발생할 수 있습니다. 분리 후 저장된 변수를 이용할 때는 변수가 제거된 것을 염두에 두셔야 합니다.셀 실행 및 숨기기:
target
변수 추출 후 이 변수를 활용하는 셀을 삭제하면 진행 중 오류를 유발할 수 있습니다. 따라서, 각 단계의 데이터 상태를 명확히 관리하고 필요시 주석 처리를 사용하여 일관성을 유지해야 합니다.유사한 문제 해결에 도움이 될 만한 사례로 다음 URL을 참고해주세요: 기출4회 작업형 2 오류(샘플수). 이 답변에서는 데이터 변형 시 발생할 수 있는 일반적인 오류 및 해결 방안에 대해 논의됩니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.