R
R-predict() 에러메시지
blackJ
2021. 5. 26. 23:10
R-predict() 에러메시지
> pre_price <- predict(model2, newdata = test_data) #생성한 모델로 예측하기
Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) :
요인(factor) make는 mercury개의 새로운 수준(levels)들을 가지고 있습니다.
predict()는 예측을 하기 위해 선형 회귀 분석에 사용된다.
여기서 에러 메시지의 중요한 포인트는 데이터 타입 factor와 변수 make이다.
factor는 R의 데이터 타입 중 한 가지이다. R의 데이터 타입을 보면 다음과 같다.
- scalar(스칼라), NA, NULL : 단일 차원의 값(하나의 원소 값)
- factor(팩터) : 범주형 데이터(정의되어 있는 카테고리를 표현하기 위한 데이터 구조)
- vector(벡터) : 1차원에서 여러개의 데이터가 모인 데이터 집합(스칼라의 모임, 1차원 배열)
- list(리스트) : key-value 형태로 저장되는 데이터 구조
- Matrix(행렬) : 행과 열을 갖는 2차원 배열 구조
- Array(배열) : 동일한 데이터 타입으로 구성된 다차원 데이터 구조
- data frame(데이터 프레임) : 엑셀 시트와 유사한 표 형태를 가진 데이터 구조
결론
불러들인 csv 파일의 데이터 타입 문제이다.
"요인(factor) make는 mercury개의 새로운 수준(levels)들을 가지고 있습니다."
str() 함수로 데이터 정보를 확인해 보면 make가 chr 타입으로 들어와 있다.
이 부분을 factor로 변형해주는 추가 코드를 predict() 사용 전에 미리 넣어주거나 => (as.factor())
model2$make<-as.factor(model2$make)
처음에 csv 파일을 불러 올 때 옵션으로 stringsAsFactors를 넣어 주면 된다.
car_data <- read.csv("car1.csv", stringsAsFactors = TRUE)