강의

멘토링

로드맵

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

juhyun991002님의 프로필 이미지
juhyun991002

작성한 질문수

pred의 행 개수 문의

작성

·

47

0

안녕하세요 섹션11 예시 문제를 아래와 같이 작성해보았는데,

모델을 통해 예측한 결과의 데이터프레임 shape이 평가용 데이터 개수와 동일하지 않고 학습용 데이터 개수와 동일하게 생성되었습니다.

아래 코드의 어떤 부분에서 실수한 것인지 문의드립니다ㅠㅠ

############################

import pandas as pd

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

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

# 사용자 코딩

# 결측치 채우기

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

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

# 회원 ID 제거, test 데이터셋의 id는 일단 남겨둠

# train = train.drop(['회원ID'], axis = 1)

# test_id = test.pop('회원ID')

# 타겟 데이터 분리

X_train = train.drop(['성별'], axis = 1)

y_train = train['성별']

# 수치형 데이터, 범주형 데이터 구분

n_train = X_train.select_dtypes(exclude = 'object')

c_train = X_train.select_dtypes(include = 'object')

n_test = test.select_dtypes(exclude = 'object')

c_test = test.select_dtypes(include = 'object')

# 수치형 데이터 Standard Scaling

from sklearn.preprocessing import StandardScaler

cols = list(n_train.columns)

scaler = StandardScaler()

n_train[cols] = pd.DataFrame(scaler.fit_transform(n_train[cols]))

n_test[cols] = pd.DataFrame(scaler.transform(n_test[cols]))

# 범주형 데이터 Label Encoding

from sklearn.preprocessing import LabelEncoder

cols = list(c_train.columns)

for col in cols:

le = LabelEncoder()

c_train[col] = le.fit_transform(c_train[col])

c_test[col] = le.transform(c_test[col])

# 데이터들 다시 합침

X_train = pd.concat([n_train, c_train], axis = 1)

test = pd.concat([n_train, c_train], axis = 1)

# train 데이터, validation 데이터 분리

from sklearn.model_selection import train_test_split

X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train, test_size = 0.15, random_state = 0)

# RandomForest 수행

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(random_state = 0)

rf.fit(X_tr, y_tr)

pred_proba = rf.predict_proba(X_val)

# 검증

from sklearn.metrics import roc_auc_score

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

####################

# baseline : 0.6064200601928629

# 회원 ID 제거 안 함 : 0.6098212640501197

# 실제 예측

pred = rf.predict(test)

submit = pd.DataFrame({

'pred' : pred

})

submit.to_csv("result.csv", index = False)

result = pd.read_csv("result.csv")

print(result.shape)

# 답안 제출 참고

# 아래 코드는 예시이며 변수명 등 개인별로 변경하여 활용

# pd.DataFrame변수.to_csv("result.csv", index=False)

 

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
juhyun991002님의 프로필 이미지
juhyun991002

작성한 질문수

질문하기