2014-12-10 22 views
6

Bence bir kişinin maaş Bundan sonraKarar ağacı modeli için R'de nasıl bir kazanç grafiği oluştururum?

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 

diğer giriş değişkenlere dayalı üstünde veya 50k altında ise tahmin etmeye çalışıyoruz R. bir karar ağacı modeli hedef değişken Maaş olduğunu oluşturduk Ben 'Tahmin' fonksiyonunu kullanarak grafiği oluşturmak için ROCR paketini nasıl kullanılacağını anlamak için kuramıyorum referans bakarak aşağıdaki

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

yaparak bir Kazanç grafik oluşturmak için çalıştık. Bu sadece ikili hedef değişkenler için mi? "Tahminlerin biçimi geçersiz" diyerek hatayı alıyorum Yukarıdaki model için bir Kazanç grafiği oluşturmama yardımcı olması için, bu konuda herhangi bir yardım çok takdir edilecektir. Teşekkürler!!

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

belgelerine göre kullanarak, bir vektöre tahmin dönüştürme 'Şu anda, ROCR sadece ikili sınıflandırma destekler ... ikiden fazla farklı etiket varsa sembolleri, yürütme bir hata iletisiyle durur. ' – jlhoward

+0

Bu durumda hedefin> 50k veya <= 50k – AbhinavVinay

+0

OK olduğu ikili bir sınıflandırmadır. Ama siz "tahmin" in ikinci argümanının sadece iki değere sahip olmanız gerekir. Testing_data $ INCOME'un sadece iki değeri var mı? – jlhoward

cevap

6

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

Teşekkürler John! Bu dönüşüm işlevi yararlı oldu :) – AbhinavVinay

+0

Sen caret paketine bakmak isteyebilirsiniz. İşte bir örnek .... http://ftp.ie.vim.org/mirrors/download.sourceforge.net/pub/sourceforge/g/gr/grpm/GRIP.R –

1

Eğer

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

kazançlar grafik modeli olasılığı ile rütbe-düzen istiyor için

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

değiştirirseniz, bu çalışması gerekir.

İlgili konular