해결된 질문
작성
·
284
0
안녕하세요. 작업형2문제 시험준비를 범주형데이터는 모두 label로 인코딩하고, 모형은 randomforest를 활용하려고 합니다.
강의해주신 내용은 수치형을 분리해서 작업을 하는데 만약, 제가 한 것처럼 하면 문제는 없는지 궁금합니다.(그냥 무턱대고 외워서 진행한거라서... 오류가 안난다 뿐인지, 코딩이 맞는지 확신이 없습니다.)
추가적으로, 원래는 index 이름이 없는 첫번째 열을 삭제 하고싶엇는데... 삭제를 못하겠더라구요 이럴경우 함수를 어떻게 적어야하는지 궁금합니다.
import pandas as pd
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
# print(train.shape, test.shape) # (1490, 10) (497, 9)
# print(train.info(), test.info()) # object 4개
# print(train.select_dtypes(include='object').columns) # 'Employment Type', 'GraduateOrNot', 'FrequentFlyer', 'EverTravelledAbroad'
# print(test.select_dtypes(include='object').columns)
# print(train.isnull().sum()) # 결측치x
# print(test.isnull().sum()) # 결측치x
# print(train['TravelInsurance'].value_counts()) # target 변수 값 확인
from sklearn.preprocessing import LabelEncoder
cols=train.select_dtypes(include='object').columns
# print(cols)
for col in cols :
le=LabelEncoder()
train[col]=le.fit_transform(train[col])
test[col]=le.transform(test[col])
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val=train_test_split(train.drop('TravelInsurance',axis=1), train['TravelInsurance'], test_size=0.2, random_state=2023)
# print(X_tr.shape, X_val.shape, y_tr.shape, y_val.shape) # (1192, 9) (298, 9) (1192,) (298,)
from sklearn.ensemble import RandomForestClassifier
model=RandomForestClassifier()
model.fit(X_tr, y_tr)
pred=model.predict_proba(X_val)
# print(pred[:,1])
from sklearn.metrics import roc_auc_score
roc_auc_score(y_val, pred[:,1]) # 0.7817398927392739 검증용
y_pred=model.predict_proba(test)
submit=pd.DataFrame({
'index' : test.index,
'y_pred': y_pred[:,1]
})
# print(submit)
submit.to_csv('result.csv',index=False)
print(pd.read_csv('result.csv'))
답변 1
1
네 분리하지 않아도 됩니다. 🙂
작업형 2 문제를 해결하기 위한 기본적인 프로세스를 잘 따르고 있습니다.
7회 시험에서는 'index' : test.index 컬럼은 제출하지 않고 예측컬럼만 제출하는 것으로 가이드 되었습니다. 참고해주세요 !!
응원합니다 !!!!🔥