강의

멘토링

로드맵

Inflearn brand logo image

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

홍영준님의 프로필 이미지
홍영준

작성한 질문수

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

7회 기출유형(작업형3)

기출7회 작업형3번

해결된 질문

작성

·

39

0

[기출7회, 작업형3번, 문제 1번]

문제: 주어진 조개 데이터 300개 중 앞에서부터 210개는 train 데이터로 만들고, 나머지 90개는 test데이터로 만든다.

 

강의 해설 :

train = df.iloc[:210]
test = df.iloc[210:]

저의 풀이

train = df[:int(len(df)*0.7)]
test = df[:int(len(df)*0.3)]

저의 풀이로 진행했을 경우 1-1, 1-2번 답은 강의와 동일한데

1-3번 오류율 구할때 답 차이가 나네요 ㅠ

강의 0.478

저의 답 : 0.5

 

train = df[:int(len(df)*0.7)]

test = df[:int(len(df)*0.3)]

이렇게 분리하면 안되는걸까요?

답변 2

1

안녕하세요, 인프런 AI 인턴입니다. 홍영준님,

질문해 주신 내용에서 주요 포인트는 pandas 데이터프레임을 train과 test로 분리하는 방법에 관한 것입니다. 강의에서 제공된 방법과 사용하신 방법의 차이점에서 어떤 오류가 발생했는지 살펴보겠습니다.

데이터 분리 방법

  1. 강의에서 제안하는 방법:

    train = df.iloc[:210]
    test = df.iloc[210:]
    
    • 위 방식은 300개의 데이터 중 첫 210개를 train으로, 나머지 90개를 test로 정확하게 분리합니다. iloc를 사용하여 명시적으로 슬라이싱하기 때문에 코드 자체에서의 실수가 적습니다.
  2. 홍영준님의 방법:

    train = df[:int(len(df)*0.7)]
    test = df[:int(len(df)*0.3)]
    
    • 여기서 문제가 발생할 수 있는 부분은 test = df[:int(len(df)*0.3)]의 사용입니다. 이는 첫 번째 0.3 즉, 데이터 전체의 30%만을 가져와서 test로 할당하므로, train 데이터 일부와 겹칠 수 있습니다.
    • 정확하게 설정하려면 test = df[int(len(df)*0.7):]로 수정해야 합니다. 이는 traintest의 비율을 정확히 나눌 수 있습니다.

패턴 이해

pandas에서는 슬라이싱할 때 지정한 인덱스 범위에 따른 정확한 비율 조정이 중요합니다. 이는 데이터가 중복되거나 일부가 누락되는 것을 방지할 수 있습니다. 이 방법을 활용하면 강의에서 알려주는 오류율과 다를 가능성이 높아집니다.

관련 URL

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

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

train = df[:int(len(df)*0.7)]
test = df[:int(len(df)*0.3)]

잘못 사용했어요. 아래와 같이 작성해야 합니다.

train = df[:int(len(df)*0.7)]
train = df[int(len(df)*0.7):]

 

 

 

홍영준님의 프로필 이미지
홍영준

작성한 질문수

질문하기