빅분기 실기 작업형 2유형 결측값 처리, 라벨인코딩 정리할게요!

Поділитися
Вставка
  • Опубліковано 20 сер 2024
  • import pandas as pd
    train = pd.read_csv("data/customer_train.csv")
    test = pd.read_csv("data/customer_test.csv")
    #데이터 로드 및 확인
    #print(train.info()) #결측값 처리(환불금액) / 라벨인코딩(주구매상품, 주구매지점)
    #print(test.info())
    #결측값 대체(최빈값)
    train.fillna(train['환불금액'].mode()[0], inplace=True)
    test.fillna(train['환불금액'].mode()[0], inplace=True)
    #print(train.info())
    #print(test.info())
    #라벨인코딩
    from sklearn.preprocessing import LabelEncoder
    le = LabelEncoder()
    #train['주구매상품'] = le.fit_transform(train['주구매상품'])
    #train['주구매지점']=le.fit_transform(train['주구매지점'])
    #test['주구매상품'] = le.fit_transform(test['주구매상품'])
    #test['주구매지점']=le.fit_transform(test['주구매지점'])
    #print(train.info())
    #print(test.info())
    #케이스1
    #만약 테스트 데이터에 트레인 데이터에는 없는 라벨이 있어 오류가 발생한 경우
    total = pd.concat([train, test])
    #print(total)
    le.fit(total['주구매상품'])
    total['주구매상품']= le.transform(total['주구매상품'])
    le.fit(total['주구매지점'])
    total['주구매지점']= le.transform(total['주구매지점'])
    #합쳐진 데이터 train, test 데이터로 재분할
    train = total.iloc[:3500,:]
    test = total.iloc[-2482:,:10]
    train = train.astype({'성별':'int'})
    print(train.info())
    print(test.info())
    #케이스2 (케이스1이 아닌 경우)
    #le.fit(train['주구매상품'])
    #train['주구매상품'] = le.transform(train['주구매상품'])
    #test['주구매상품'] = le.transform(test['주구매상품'])
    #le.fit(train['주구매지점'])
    #train['주구매지점'] = le.transform(train['주구매지점'])
    #test['주구매지점'] = le.transform(test['주구매지점'])
    #print(train.info())
    #print(test.info())
    #print(total['주구매상품'])
    #데이터 분할
    from sklearn.model_selection import train_test_split
    X = train.drop(columns=['성별','회원ID'])
    y = train['성별']
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=2024)
    #모델링(분류)
    from sklearn.ensemble import RandomForestClassifier
    rfc = RandomForestClassifier(n_estimators=150, max_depth=20, random_state=2024)
    rfc.fit(X_train, y_train)
    pred1=rfc.predict(X_test) #pred1 : train 데이터에대한 예측 값
    #성능평가
    from sklearn.metrics import roc_auc_score, accuracy_score
    roc = roc_auc_score(y_test, pred1)
    acc = accuracy_score(y_test, pred1)
    print('roc:', roc) #0.6023 / 0.6023
    print('acc:', acc) #0.6642 / 0.6642
    #테스트 데이터 예측
    test_X = test.drop(columns=['회원ID'])
    pred2=rfc.predict(test_X)
    print(pred2)
    #결과 데이터 제출 및 확인
    pd.DataFrame({'pred':pred2}).to_csv('result.csv', index=False)
    result = pd.read_csv('result.csv')
    print(result)

КОМЕНТАРІ • 9

  • @skima214
    @skima214 Місяць тому

    교수님 너무 감사합니다. 덕분에 합격했어요. 미리알았다면...책도 구매했을텐데.. 시험앞두고 도움많이 되었습니다. 감사합니다

    • @aiaiyouknow1063
      @aiaiyouknow1063  Місяць тому

      어머나 세상에! 너무 좋은 소식 전해주셔서 감사해요! 합격 축하드려요!! 😊

  • @LEE0616
    @LEE0616 2 місяці тому +2

    교수님 너무 감사합니다 잘보겠습니다!

  • @darkmoon4346
    @darkmoon4346 2 місяці тому +2

    시험 앞두고 도움이 많이 되었어요~ 시험 잘 보고 오겠습니다 ! 감사합니다 ㅎ

  • @user-bg4mj4yl3s
    @user-bg4mj4yl3s 2 місяці тому

    와 시험 맞춤형 강의!! ㅎㅎ 깔끔하네요 ! 고맙습니다

  • @reuental98
    @reuental98 2 місяці тому

    대단한 설명입니다 감사합니다

  • @homerunballl
    @homerunballl 2 місяці тому

    와우 넘 빠른데요...ㅎㅎ 감사합니다 :) 넵 최빈값으로 결측치를 처리하되 만약 Nan이 최빈값이면 큰일이죠 ㅎㅎ

  • @user-zy1sc9er2h
    @user-zy1sc9er2h 2 місяці тому

    감사합니다 교수님. 다름이 아니라 케이스1 같은 경우는 결과값으로 예측해야 하는 성별이랑은 별개로 다른 라벨이 없어서 오류가 발생한 경우의 수를 말씀하시는건가요?

    • @aiaiyouknow1063
      @aiaiyouknow1063  2 місяці тому

      네 목표변수(성별)가 아닌 다른 컬럼 중에 라벨인코딩 해주는 부분에 대해서 말씀드린거예요!