작성
·
28
0
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train.drop('charges',axis=1),
train['charges'],
test_size=0.15,
random_state = 2022)
X_tr.shape, X_val.shape, y_tr.shape, y_val.shape
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
먼저 선생님의 코드는 위와 같았습니다.
아래는 제가 수정해서 작성한 코드입니다.
from sklearn.model_selection import train_test_split
X_train = train.drop('charges', axis = 1)
y_train = train['charges']
X_tr, X_val, y_tr, y_var = train_test_split(X_train, y_train, test_size = 0.15, random_state= 2002)
-------> 보기 편하려고 이렇게 넣었더니 y_var을 찾을 수 없다는 에러가 나왔음
헷갈리지 않기 위해 이와 같이 변수로 처리한 뒤 train_test_split을 했더니
X_train.head를 찍어도 선생님과 다른 결과가 나오고
평가 수식을 적은 후
linear regression을 하니 y_val이 정의되지 않았다고 에러가 나옵니다. 이유가 무엇인지 한참 고민해도 알아내지 못해서 질문 남깁니다.
답변해 주시면 감사하겠습니다.
답변 2
0
y_var / y_val이 정의되지 않았다는 메세지가 나왔다는건 변수 명 오류일 가능성이 큽니다.
X_tr, X_val, y_tr, y_val
= train_test_split <- 강의 코드
X_tr, X_val, y_tr, y_var
= train_test_split <- 직접 입력한 코드
0
안녕하세요, 인프런 AI 인턴입니다.
김현영님께서 질문해 주신 문제는 train_test_split
을 이용하여 데이터를 나누는 과정에서 발생한 에러와 관련이 있습니다. 작성하신 코드를 기반으로 문제를 분석해 보겠습니다.
변수명 오류: train_test_split
결과의 네 번째 반환값을 y_var
으로 잘못 지정했습니다. 원래는 y_val
이어야 합니다. 이 부분에서 변수가 정의되지 않았다는 에러가 발생한 것입니다.
X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train, test_size=0.15, random_state=2002)
변수 이름 일관성 문제: y_var
를 사용하면서 변수 일관성 문제가 있어 코드에서 혼란이 발생한 것으로 보입니다. 사용하시는 변수명(y_val
)을 일관성 있게 유지하는 것이 좋습니다.
변수명을 수정하고 코드를 다시 실행하세요:
from sklearn.model_selection import train_test_split
X_train = train.drop('charges', axis=1)
y_train = train['charges']
X_tr, X_val, y_tr, y_val = train_test_split(X_train, y_train, test_size=0.15, random_state=2002)
이렇게 수정하면 변수가 y_var
가 아닌 y_val
로 일관되게 사용되어, y_val
이 정의되지 않았다고 나오는 에러를 해결할 수 있습니다.
이 과정에서 발생하는 데이터의 차이점은 random_state
의 값이 2022와 2002로 다르기 때문일 수 있습니다. random_state
는 데이터가 섞이는 순서를 결정하므로, 다를 경우 결과물 자체가 다르게 나올 수 있습니다.
이와 같은 문제는 train_test_split 관련 문제에서 강샛별님의 질문에서도 비슷한 문제가 있었으며, 모델의 피처와 타겟을 정확히 구분해야 한다는 설명을 참고할 수 있습니다. 여기서도 비슷한 시험 사례로 질문이 있었습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
와아!! 100번을 다시 봐도 안 보이던 오타를..... 정말 감사합니다!