해결된 질문
작성
·
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로 분리하는 방법에 관한 것입니다. 강의에서 제공된 방법과 사용하신 방법의 차이점에서 어떤 오류가 발생했는지 살펴보겠습니다.
강의에서 제안하는 방법:
train = df.iloc[:210]
test = df.iloc[210:]
train
으로, 나머지 90개를 test
로 정확하게 분리합니다. iloc
를 사용하여 명시적으로 슬라이싱하기 때문에 코드 자체에서의 실수가 적습니다.홍영준님의 방법:
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):]
로 수정해야 합니다. 이는 train
과 test
의 비율을 정확히 나눌 수 있습니다.pandas에서는 슬라이싱할 때 지정한 인덱스 범위에 따른 정확한 비율 조정이 중요합니다. 이는 데이터가 중복되거나 일부가 누락되는 것을 방지할 수 있습니다. 이 방법을 활용하면 강의에서 알려주는 오류율과 다를 가능성이 높아집니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
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):]