기출 8회 2유형 질문
150
작성한 질문수 5
원핫 인코딩시, train 과 test의 컬럼의수가 달라지는 경우가 있어서 데이터를 concat 했다가 다시 분리를 해주고 있는데요.
아래와 같이 코딩시 답안 제출까지는 가능하지만, 강사님께서 풀이한 것과 값차이가 많이 납니다.
이렇게 하면 안되나요?
import pandas as pd train = pd.read_csv('churn_train.csv') test = pd.read_csv('churn_test.csv') y=train.pop('TotalCharges') print (train.shape, test.shape, y.shape) total = pd.concat([train, test], axis=0) total=total.drop('customerID',axis=1) # print (total.shape) cols=total.select_dtypes(include = 'object').columns total = pd.get_dummies (total[cols]) train = total[:4116] test = total[4116:] print (train.shape, test.shape, y.shape) from sklearn.model_selection import train_test_split X_train, X_val, y_train, y_val = train_test_split(train, y, test_size=0.2, random_state=0) print(X_train.shape, X_val.shape, y_train.shape, y_val.shape) from sklearn.ensemble import RandomForestRegressor rf = RandomForestRegressor() rf.fit(X_train, y_train) pred=rf.predict(X_val) pred from sklearn.metrics import mean_absolute_error mae = mean_absolute_error (y_val, pred) print(mae) # 결과값 제출 result = rf.predict(test) # print(result.shape, test.shape) print(result) result = pd.DataFrame ({ 'total price':result }) result.to_csv("result.csv", index=False) print(result) # help(sklearn) # import sklearn # help(sklearn.metrics )
답변 2
0
읽기 어렵게 일부러 이러시는 건 아니죠? 코드블럭을 누른다음 코드를 넣어주면 이쁘게 보입니다.

total = pd.get_dummies(total[cols])
이 부분이 잘못 됐어요 이러면 total에 결과가 인코딩된 범주형 데이터만 들어갑니다.
total = pd.get_dummies(total) 로 변경해 주세요!
0
안녕하세요, 인프런 AI 인턴입니다. 장한문님의 질문에 답변드리겠습니다.
장한문님께서 작성하신 코드는 데이터 전처리와 머신러닝 모델링 과정에서 일반적으로 자주 사용되는 방식입니다. 하지만 일부 오류와 주의해야 할 부분들이 존재합니다.
데이터 전처리 및 컬럼 수 일치: 장한문님께서 train과 test 데이터를 합쳐서 원핫 인코딩을 진행하신 것은 적절한 접근 방식입니다. 하지만
total = pd.get_dummies(total[cols])부분에서 수치형 데이터를 포함하지 않고 오직 범주형 데이터만을 다루고 있습니다. 이렇게 하면 수치형 데이터가 사라지는 문제가 발생할 수 있습니다. 따라서, pd.get_dummies를 적용함에 있어total전체에 대해 적용해야 합니다.데이터 분할: 원핫 인코딩 이후에 올바르게 데이터를 분리하고 있는지 확인이 필요합니다. 데이터의 인덱스를 기준으로 따로 분리하는 문제입니다.
total[:4116]과total[4116:]에서 데이터를 분리할 때, 총 행 수가 잘못 처리되는 경우도 고려해야 합니다.리그레이션 평가 기준: RandomForestRegressor는 회귀 모델이므로, 성능 평가를 Mean Absolute Error(MAE) 대신 다른 평가 기법을 사용할 수도 있습니다. 성능이 다른 이유는 라벨과 피처의 불일치, 데이터 전처리 문제, 모델 하이퍼파라미터 설정 등이 있을 수 있습니다.
중요한 열 삭제 확인: ‘customerID’는 인덱스나 식별자 열로 삭제할 수 있지만, 다른 중요한 열들이 누락되지 않았는지 확인이 필요합니다.
장한문님의 코드상 오류를 해결하기 위한 기존 게시물이나 문제 해결 도움을 줄 수 있는 링크는 다음과 같습니다:
이 링크들에서는 데이터 병합, 원핫 인코딩, 모델 학습과 예측의 전반적인 과정에서 유의해야 할 점들을 다루고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
작업형2 카테고리
0
5
1
110강 회귀_8번 문의
0
8
2
XGBRegressor 학습 시 warning 출력
0
11
2
데이터 프레임을 변경해도 되나요?
0
9
2
10회 기출 작업형3 문제 2-1 질문
0
14
2
작업형 2 질문
0
13
2
작업형 2 템플릿 확인 요청
0
12
2
작업형2 인코딩 질문
0
22
2
작업형 3 벼락치기 공부방법 질문
0
30
2
기출 11회 작업형 2_전체 데이터 학습 여부
0
31
2
예측값 결과 소수점 차이
0
26
2
기출 문제와 실전챌린지 연습문제 무엇부터 푸는게 나은가요?
0
34
1
전처리 train() test([ ])
0
23
2
작업형 1 배경지식 질문
0
31
2
옳게 풀은건지 질문드립니다!
0
21
1
roc_auc_score
0
29
2
추가질문 합니다
0
22
2
시험환경 구름
0
19
2
2유형 질문드려요
0
20
2
RandomForest vs lgb
0
27
2
전처리 관련질문
0
29
3
작업형3 기출
0
19
2
유형2에서 데이터분할 생략 가능여부
0
32
2
9회 기출 유형3 질문
0
21
2





