2014-12-10 13 views
6

Tôi đã tạo ra một mô hình cây quyết định trong R. Biến mục tiêu là Lương, nơi chúng tôi đang cố gắng để dự đoán nếu mức lương của một người là trên hoặc dưới 50k dựa trên các biến đầu vào khácLàm cách nào để tạo biểu đồ độ lợi trong R cho mô hình cây quyết định?

df<-salary.data 

train = sample(1:nrow(df), nrow(df)/2) 
train = sample(1:nrow(df), size=0.2*nrow(df)) 
test = - train 
training_data = df[train, ] 
testing_data = df[test, ] 

fit <- rpart(training_data$INCOME ~ ., method="class", data=training_data)##generate tree 
testing_data$predictionsOutput = predict(fit, newdata=testing_data, type="class")##make prediction 

Sau đó tôi cố gắng để tạo ra một biểu đồ tăng bằng cách thực hiện những điều sau đây

# Gain Chart 
pred <- prediction(testing_data$predictionsOutput, testing_data$INCOME) 
gain <- performance(pred,"tpr","fpr") 
plot(gain, col="orange", lwd=2) 

bằng cách nhìn vào tài liệu tham khảo tôi không thể hiểu được làm thế nào để sử dụng gói ROCR để xây dựng biểu đồ bằng cách sử dụng chức năng 'Dự đoán'. Đây có phải là chỉ cho các biến mục tiêu nhị phân? Tôi nhận được thông báo lỗi 'định dạng dự đoán không hợp lệ'

Bất kỳ trợ giúp nào về điều này sẽ được đánh giá cao để giúp tôi tạo biểu đồ Tăng cho mô hình trên. Cảm ơn!!

AGE   EMPLOYER  DEGREE    MSTATUS   JOBTYPE  SEX C.GAIN C.LOSS HOURS 
1 39   State-gov Bachelors  Never-married  Adm-clerical Male 2174  0 40 
2 50 Self-emp-not-inc Bachelors Married-civ-spouse Exec-managerial Male  0  0 13 
3 38   Private HS-grad   Divorced Handlers-cleaners Male  0  0 40 

     COUNTRY INCOME 
1 United-States <=50K 
2 United-States <=50K 
3 United-States <=50K 
+0

Theo tài liệu, 'Hiện nay, ROCR chỉ hỗ trợ phân loại nhị phân ... Nếu có nhiều hơn hai nhãn riêng biệt biểu tượng, thực hiện dừng lại với một thông báo lỗi.' – jlhoward

+0

Trong trường hợp này, nó là một phân loại nhị phân trong đó đích là> 50k hoặc <= 50k – AbhinavVinay

+0

OK. Nhưng đối số thứ hai của bạn cho 'dự đoán' chỉ có hai giá trị. 'Test_data $ INCOME' có chỉ có hai giá trị không? – jlhoward

Trả lời

6

Chuyển đổi dự đoán cho một vector, sử dụng c()

library('rpart') 
library('ROCR') 
setwd('C:\\Users\\John\\Google Drive\\working\\R\\questions') 
df<-read.csv(file='salary-class.csv',header=TRUE) 

train = sample(1:nrow(df), nrow(df)/2) 
train = sample(1:nrow(df), size=0.2*nrow(df)) 
test = - train 
training_data = df[train, ] 
testing_data = df[test, ] 

fit <- rpart(training_data$INCOME ~ ., method="class", data=training_data)##generate tree 
testing_data$predictionsOutput = predict(fit, 
             newdata=testing_data, type="class")##make prediction 

# Doesn't work 
# pred <- prediction(testing_data$predictionsOutput, testing_data$INCOME) 
v <- c(pred = testing_data$predictionsOutput) 
pred <- prediction(v, testing_data$INCOME) 
gain <- performance(pred,"tpr","fpr") 
plot(gain, col="orange", lwd=2) 

enter image description here

+0

Cảm ơn John! Chức năng chuyển đổi đó hữu ích :) – AbhinavVinay

+0

Bạn có thể xem gói dịch vụ chăm sóc. Đây là một ví dụ .... http://ftp.ie.vim.org/mirrors/download.sourceforge.net/pub/sourceforge/g/gr/grpm/GRIP.R –

1

này nên làm việc nếu bạn thay đổi

predict(fit, newdata=testing_data, type="class") 

để

predict(fit, newdata=testing_data, type="prob") 

Biểu đồ tăng muốn để xếp hạng theo đơn đặt hàng theo mô hình xác suất.

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