작성
·
271
0
안녕하세요,
혼동행렬을 복습중에 궁금한 점이 생겨 질문 드립니다. (혹시 실제 시험에서 정확도나 민감도 같은 수치를 제출 하라고 할 때)
풀이해주신 작업형 예제2번 같은 경우,
X_train과 y_train을 merge해서 df를 만들고 그 df를 훈련용 데이터와 검정용 데이터로 나눴기 때문에
caret::confusionMatrix(p4, test$gender) 명령은 문제없이 수행되고 정확도나 기타 혼동행렬 지표를 찾을 수 있었습니다.
그러나, 이 후에 전체데이터(df)로 모델링을 구축하고 p4까지는 문제없이 구해지는데, 여기서
caret::confusionMatrix(p4,X_test$gender) 이렇게 수행을 하면
에러: `data` and `reference` should be factors with the same levels. 이런 에러가 뜨더라구요.
생각을 해보니 X_test에는 gender라는 컬럼이 없어서 인 듯한데요,
여기서 질문입니다. (잘못 코딩한 것이 아니라면)
1. 문제에서 혼동행렬의 특정 지표값을 물어볼 때 제출해야하는 값은 처음에 파티셔닝 진행하고 혼동행렬을 돌렸을 때 나온 값으로 제출해야하는지 궁금합니다.
실제 강의에서는 그렇게 다뤄주셨는데 , 그런거라면 뒤에 전체데이터(df)를 다 집어넣어서 다시 모델링을 진행하고 예측을 하는 과정 전부 생략하고 바로 write.csv 하면 되는건지 궁금합니다.
1-1. 만약 전체 데이터로 하는 모델링과 예측과정을 다 생략하는거라면 혼동행렬 지표 도출하기 문제에서 X_test는 어디에 써야하는지도 궁금합니다.
혹시 질문이 이해가 안되는 부분 말씀해주시면 감사하겠습니다,,
답변 1
0
안녕하세요.
문제에서 만약 혼동행렬의 지표값을 물어본다면 X_test외에 y_test를 주어질 것 같습니다.
파티셔닝은 샘플링에 따라 지표값이 달라져서 그렇게 나오지 않을 것 같네요.
만약 그렇게 문제가 나오면 지금과 동일한 코드를 사용하시되 마지막에
y_test와 예측값을 비교하면 될 것 같습니다. 중간에 굳이 데이터를 분할해서 평가지표를 확인한 이유는
모델의 중간결과를 알기 위해서 입니다. 혹시나 엉뚱한 모델이 나올수도 있으니깐요.
따라서 전체 df로 모델링만 하셔도 됩니다.
전체 데이터 하나만 주고 알아서 데이터분할하고 하라는 문제의 출제가능성은 낮습니다.
다른분께도 답변드렸는데 X_train, y_train, X_test, X_test로 데이터를 제공하는 것은
R로만 분석하는 분들에게는 생소하지만 파이썬으로 분석하는 분들에게는 지극히 일반적인
데이터 제공방법입니다. 따라서 앞으로도 그런식으로 데이터를 구분해서 제공할 것 같습니다.
만약 y_test를 준다고해도 전체 csv하나만 주는것이 아니고 네 개로 나눠서 제공할 것 같습니다.
전체 df로 모델링하는 경우가 되면 X_train, y_train merge해서 모델링하고
X_test로 예측하고 y_test와 비교해서 평가지표를 제출하게 될 것 같습니다.
다만, y_test를 제공하면 논란의 여지가 있을 수 있습니다.
그래서 지금처럼 y_test를 제공하지 않는 형태로 시험이 계속 출제될 것으로 보입니다.
답변 감사드립니다!
전체 df로 모델링 한다고 말씀해주셨는데 y_test까지 전부 merge해서 모델링하고 따로 파티셔닝은 생략하고 y_test로 예측하는것이라고 이해하였는데 맞나요??