Trong một bài tập, chúng tôi được yêu cầu thực hiện xác thực chéo trên mô hình CART. Tôi đã thử sử dụng chức năng cvFit
từ cvTools
nhưng nhận được thông báo lỗi lạ. Dưới đây là một ví dụ nhỏ:Xác thực chéo mô hình CART
library(rpart)
library(cvTools)
data(iris)
cvFit(rpart(formula=Species~., data=iris))
Các lỗi tôi nhìn thấy là:
Error in nobs(y) : argument "y" is missing, with no default
Và traceback()
:
5: nobs(y)
4: cvFit.call(call, data = data, x = x, y = y, cost = cost, K = K,
R = R, foldType = foldType, folds = folds, names = names,
predictArgs = predictArgs, costArgs = costArgs, envir = envir,
seed = seed)
3: cvFit(call, data = data, x = x, y = y, cost = cost, K = K, R = R,
foldType = foldType, folds = folds, names = names, predictArgs = predictArgs,
costArgs = costArgs, envir = envir, seed = seed)
2: cvFit.default(rpart(formula = Species ~ ., data = iris))
1: cvFit(rpart(formula = Species ~ ., data = iris))
Có vẻ rằng y
là bắt buộc đối với cvFit.default
. Nhưng:
> cvFit(rpart(formula=Species~., data=iris), y=iris$Species)
Error in cvFit.call(call, data = data, x = x, y = y, cost = cost, K = K, :
'x' must have 0 observations
Tôi đang làm gì sai? Gói nào sẽ cho phép tôi thực hiện xác thực chéo với cây CART mà không phải tự mã hóa? (Tôi sooo lười biếng ...)
Nếu bạn thâm nhập vào các tài liệu cho cvTools ** ** nó xuất hiện hầu hết các công cụ đó đều được xây dựng với các biến đáp ứng liên tục trong tâm trí, chứ không phải là rời rạc. Bạn có thể có thể làm cho nó hoạt động, nhưng có vẻ như bạn phải cung cấp chức năng của riêng mình cho 'chi phí' để tính toán lỗi phân loại. – joran
@joran: Chính xác - cảm ơn bạn! Xem [câu trả lời của riêng tôi] (http://stackoverflow.com/a/16724706/946850). – krlmlr