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)