인프런 커뮤니티 질문&답변

서수영님의 프로필 이미지

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

예시문제 작업형2 신버전 문의드립니다.

해결된 질문

작성

·

76

0

 

안녕하세요 예시문제 작업형2 신버전 풀어보았는데

평가값은 0.615

pred는 아래와 같이 나왔는데 맞게나온걸까요?

 

그리고 아래와 같이 풀어보았는데

혹시 아래와 같은 풀이에서

#원핫인코딩과 레이블인코딩을 넣을수있을까요?

넣으려면 어떤 문장으로 넣어야될까요? (오류가 뜨더라구요ㅠ)

 

#아니면 굳이 인코딩 안하고 아래처럼 제출해도될까요?


#데이터불러오기

import pandas as pd

train = pd.read_csv("data/customer_train.csv")

test = pd.read_csv("data/customer_test.csv")

# 확인/전처리/분리/모델/평가/예측/저장

# roc_auc(pred=predict_proba) / 양성(1)값=남자/ 분류모델

#확인

# print(train.shape, test.shape)

#print(train.head())

#print(test.head())

# print(train.info())

# print(test.info())

# print(train.isnull().sum())

# print(test.isnull().sum())

 

#전처리(결측값제거/문자제거/인코딩)

##결측값제거

train['환불금액'] = train['환불금액'].fillna(0)

test['환불금액'] = test['환불금액'].fillna(0)

##문자제거

cols=train.select_dtypes(include='object').columns #문자만

cols

train = train.drop(cols,axis=1) #문자제거

test = test.drop(cols,axis=1)

##인코딩

 

 

 

 

#분리

from sklearn.model_selection import train_test_split

X_tr, X_val, y_tr, y_val = train_test_split(

train.drop('성별',axis=1), train['성별'], test_size=0.2, random_state=2022

)

 

 

#모델

from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()

model.fit(X_tr,y_tr)

pred = model.predict_proba(X_val)

 

 

#평가

from sklearn.metrics import roc_auc_score

print(roc_auc_score(y_val, pred[:,1]))

 

 

#예측

pred = model.predict_proba(test)

submit = pd.DataFrame({

'pred':pred[:,1]

})

 

 

#저장

submit.to_csv('28381.csv', index=False)

print(pd.read_csv('28381.csv'))

 

답변 1

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

  1. 작업형2는 맞게라는 표현을 쓰기는 조금 어려울 것 같아요:) 큰문제는 없어 보입니다.

  2. 예시문제 작업형2(신 버전) 아래쪽에 제가 코드가 있어요! 휠을 조금만 내려보시겠어요?

    하나는 심플한 코드 하나는 레이블 인코딩을 적용한 코드입니다. 참고 부탁드려요!

더불어 위 코드에서는 범주형 데이터를 아래와 같이 제거해버려 인코딩할 범주형 데이터가 없는 것 같아요!

##문자제거

cols=train.select_dtypes(include='object').columns #문자만

cols

train = train.drop(cols,axis=1) #문자제거

test = test.drop(cols,axis=1)

 

레이블 인코딩 방법

for col in cols:
	le = LabelEncoder()
	train[col] = le.fit_transform(train[col])
	test[col] = le.transform(test[col])