10

Tôi đã đào tạo mô hình hồi quy tuyến tính với dấu mũ R. Tôi bây giờ đang cố gắng để tạo ra một ma trận nhầm lẫn và tiếp tục nhận được lỗi sau:Lỗi trong Ma trận lộn xộn: dữ liệu và các yếu tố tham chiếu phải có cùng số cấp độ

Lỗi trong confusionMatrix.default (pred, thử nghiệm $ Final): dữ liệu và các yếu tố tham khảo phải có cùng số lượng

EnglishMarks <- read.csv("E:/Subject Wise Data/EnglishMarks.csv", 
header=TRUE) 
inTrain<-createDataPartition(y=EnglishMarks$Final,p=0.7,list=FALSE) 
training<-EnglishMarks[inTrain,] 
testing<-EnglishMarks[-inTrain,] 
predictionsTree <- predict(treeFit, testdata) 
confusionMatrix(predictionsTree, testdata$catgeory) 
modFit<-train(Final~UT1+UT2+HalfYearly+UT3+UT4,method="lm",data=training) 
pred<-format(round(predict(modFit,testing)))    
confusionMatrix(pred,testing$Final) 

Lỗi xảy ra khi tạo ma trận nhầm lẫn. Các cấp là như nhau trên cả hai đối tượng. Tôi không thể tìm ra vấn đề là gì. Cấu trúc và cấp độ của chúng được đưa ra dưới đây. Chắc họ giống nhau. Bất kỳ sự trợ giúp nào cũng sẽ được đánh giá rất cao vì nó khiến tôi bị nứt !!

> str(pred) 
chr [1:148] "85" "84" "87" "65" "88" "84" "82" "84" "65" "78" "78" "88" "85" 
"86" "77" ... 
> str(testing$Final) 
int [1:148] 88 85 86 70 85 85 79 85 62 77 ... 

> levels(pred) 
NULL 
> levels(testing$Final) 
NULL 
+0

Đầu mối nằm ngay trong đầu ra của bạn. Xem chúng khác nhau như thế nào? pred là của lớp nhân vật và thử nghiệm $ Final là số nguyên lớp. khi bạn gọi định dạng ở đây 'pred <-format (round (dự đoán (modFit, testing)))', nó chuyển đổi nó sang định dạng ký tự, như nó làm khi được cung cấp một danh sách. Tại sao bạn định dạng? và có lẽ bạn nên tính toán RMSE hoặc MAE của mô hình của bạn, hãy xem https://heuristically.wordpress.com/2013/07/12/calculate-rmse-and-mae-in-r-and-sas/ này – infominer

+0

@infominer Bây giờ tôi đã coverted kết quả char để int bằng cách sử dụng pred <-as.integer (định dạng (vòng (dự đoán (modFit, kiểm tra)))) lệnh nhưng vẫn còn lỗi tương tự vẫn còn như trước. Tôi không biết ở đâu Tôi đi sai. – abcd

Trả lời

6

Làm table(pred)table(testing$Final). Bạn sẽ thấy rằng có ít nhất một số trong bộ thử nghiệm không bao giờ được dự đoán (tức là không bao giờ có mặt trong số pred). Đây là lý do tại sao "số lượng các cấp khác nhau". Có một ví dụ về chức năng tùy chỉnh được thực hiện để khắc phục sự cố này here.

Tuy nhiên, tôi phát hiện ra rằng thủ thuật này hoạt động tốt: table(factor(pred, levels=min(test):max(test)), factor(test, levels=min(test):max(test)))

Nó sẽ cho bạn biết chính xác những ma trận nhầm lẫn tương tự như với chức năng.

Các vấn đề liên quan