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

since4042님의 프로필 이미지

작성한 질문수

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

에러메세지와 마주하기

에러메세지와 마주하기 에러 4번

해결된 질문

작성

·

81

0

  • 9분 09초

  • 영상과 노트북의 코드가 다른데요

# 풀이 코드
# X_train, y_train, X_test 3개 파일이 주어졌을 때
from sklearn.datasets import load_wine
wine = load_wine()
df = pd.DataFrame(wine.data, columns=wine.feature_names)
df['target'] = wine.target

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, _ = train_test_split(df.drop('target',axis=1),
                                               df['target'],
                                               test_size=0.2,
                                               random_state=2022)

# 만약 'proline'컬럼의 값이 1500 일때 이상치라고 판단해 삭제 했다면?
print("1500이상인 데이터 수:", sum(X_train['proline'] >= 1500))

# 삭제할 데이터의 인덱스 값을 구하고 drop함수를 통해 삭제
ind = X_train[X_train['proline'] >= 1500].index
print("삭제할 index:", ind)
X_train = X_train.drop(ind) # 기본값 axis = 0
y_train = y_train.drop(ind)

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()
model.fit(X_train, y_train)
  • (질문1 )X_train에 y_train를 합친뒤 이상치를 삭제하는 것보다 각각 개별로 삭제하는게 더 간단해서 수정한건가요?

  • (질문2)

    df 에서 이상치를 제거한 후에 train_test_split 으로 데이터를 나눠도 되는건가요?

답변 1

1

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

  1. X와 y따로 진행해도 되고, 합쳐서 진행해도 됩니다 🙂

  2. 아니요. # X_train, y_train, X_test 3개 파일이 주어졌을 때 의 상황이
    1개의 데이터를 X_train, X_test, y_train로 만든 상황까지가 데이터 불러오기라고 봐주세요! (시험환경에서도 복사-붙여넣기로 동작하게 만들려고 하다보니 이렇게 작성하였는데 train_test_split이 나와서 조금 헷갈릴 수 있겟네요! )

     

    데이터 전처리시 train에 적용한 모든 작업은 test에도 동일하게 작업하나

    test 데이터는 절대로 행을 삭제하면 안됩니다. 따라서 합쳐서 제거 하면 안됩니다. 100개를 물었는데 test에서 1~2개가 사라지면 0점 처리됩니다.

     

    from sklearn.datasets import load_wine
    wine = load_wine()
    df = pd.DataFrame(wine.data, columns=wine.feature_names)
    df['target'] = wine.target
    
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, _ = train_test_split(df.drop('target',axis=1),
                                                   df['target'],
                                                   test_size=0.2,
                                                   random_state=2022)

 

더불어

  • 이상치가 나올 것으로 만든 영상인데 아직 작업형2가 결측치도 나온적이 없어요. 작업형2는 난이도가 낮게 나왔습니다.

  • 문제에서 이상치라고 말하지 않는다면 이상치 관련해서는 작업하지 않는 것을 추천드립니다.