본문 바로가기
자격증/[빅분기] 빅데이터분석기사

[작업형2] roc_acu_score 에러.

by 바다의 공간 2024. 11. 18.

https://dataq.goorm.io/exam/3/%EC%B2%B4%ED%97%98%ED%95%98%EA%B8%B0/quiz/4

 

구름EDU - 모두를 위한 맞춤형 IT교육

구름EDU는 모두를 위한 맞춤형 IT교육 플랫폼입니다. 개인/학교/기업 및 기관 별 최적화된 IT교육 솔루션을 경험해보세요. 기초부터 실무 프로그래밍 교육, 전국 초중고/대학교 온라인 강의, 기업/

edu.goorm.io

이번에는 작업형2번을 구름edu에서 실행해보았습니다.

(하..너무 힘들고 힘들었어요)

일단 문제를 확인해보는 것보터 해볼게요!

 

일단 저희가 확인해야하는것은

1.백화점 구매 고객의 성별을 예측하는 모델 만들기

2.roc_auc_score을 통해서 점수 평가가된다는점

 

입니다. 일단 데이터를 확인해야겠죠?

#데이터 확인
print(train.shape, test.shape)

를해서 3500,2482를 확인할 수 있습니다.

 

그리고 결측값이 환불금액<< 에만 있어서 fillna(0)를 해서 0으로 맞춰주었어요.

그러면 결측값이 없어졌고

 

이제 학습을 하기 위한 데이터를 만들어야하는데

level1으로 수치형데이터만 가지고와서 리스트로 만들어보겠습니다.

 

X = train[['회원ID', '총구매액',  '최대구매액', '환불금액', '방문일수', '방문당구매건수', '주말방문비율', '구매주기']]
X_test = test[['회원ID', '총구매액',  '최대구매액', '환불금액', '방문일수', '방문당구매건수', '주말방문비율', '구매주기']]
y = train.pop('성별')

여기서 pandas는 2d array로 해야돼요.

그래서 [[]]가 있다는점 꼭!!기억해요.

import pandas as pd

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

# 사용자 코딩

#데이터 확인
#print(train.shape, test.shape)

#결측값 대체
train['환불금액'] =train['환불금액'].fillna(0) 
test['환불금액'] =test['환불금액'].fillna(0) 

# 학습할 컬럼 선택
X = train[['회원ID', '총구매액',  '최대구매액', '환불금액', '방문일수', '방문당구매건수', '주말방문비율', '구매주기']]
X_test = test[['회원ID', '총구매액',  '최대구매액', '환불금액', '방문일수', '방문당구매건수', '주말방문비율', '구매주기']]
y = train.pop('성별')

#모델 가져오기 (RandomForestClassifier)
from sklearn.ensemble import RandomForestClassifier

model = RandomForestClassifier()
model.fit(X, y)

# 예측하기
predict = model.predict_proba(X_test)
predict_male = predict[:, 1]
#print(predict_male)
#########성능예측하기
#from sklearn.metrics import roc_auc_score
#roc_auc = roc_auc_score(y, predict_male)
#print("ROC-AUC Score:", roc_auc)


print(len(y)) #3500
print(len(predict_male)) #2482

#result = pd.DataFrame({
#	'pred':predict
#})

#result.to_csv('result.csv', index=False)

#result= pd.read_csv('result.csv')
#print(result)

여기서 계속 막혔던 부분은 성능예측하는 부분인데 

y와 predict_male값의 크기가 안맞았는데 그래서 ROC_AUC_SCORE 이 되지않아요..