मैं मॉडल कैरट पैकेज द्वारा बनाई गई के लिए एक निर्णय सीमा साजिश करना चाहते हैं। आदर्श रूप से, मैं कैरेट से किसी भी वर्गीकृत मॉडल के लिए एक सामान्य मामला विधि चाहता हूं। हालांकि, मैं वर्तमान में केएनएन विधि के साथ काम कर रहा हूं। मैंने नीचे कोड शामिल किया है जो यूसीआई से वाइन गुणवत्ता डेटासेट का उपयोग करता है जो मैं अभी के साथ काम कर रहा हूं।कैसे कैरट पैकेज में KNN मॉडल के लिए एक निर्णय सीमा ग्राफ़ बनाने के लिए?
मैं इस पद्धति है कि आर में जेनेरिक KNN विधि के साथ काम करता है पाया है, लेकिन समझ नहीं कैसे कैरट से मैप करने के लिए ->https://stats.stackexchange.com/questions/21572/how-to-plot-decision-boundary-of-a-k-nearest-neighbor-classifier-from-elements-o/21602#21602
library(caret)
set.seed(300)
wine.r <- read.csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-red.csv', sep=';')
wine.w <- read.csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine-quality/winequality-white.csv', sep=';')
wine.r$style <- "red"
wine.w$style <- "white"
wine <- rbind(wine.r, wine.w)
wine$style <- as.factor(wine$style)
formula <- as.formula(quality ~ .)
dummies <- dummyVars(formula, data = wine)
dummied <- data.frame(predict(dummies, newdata = wine))
dummied$quality <- wine$quality
wine <- dummied
numCols <- !colnames(wine) %in% c('quality', 'style.red', 'style.white')
low <- wine$quality <= 6
high <- wine$quality > 6
wine$quality[low] = "low"
wine$quality[high] = "high"
wine$quality <- as.factor(wine$quality)
indxTrain <- createDataPartition(y = wine[, names(wine) == "quality"], p = 0.7, list = F)
train <- wine[indxTrain,]
test <- wine[-indxTrain,]
corrMat <- cor(train[, numCols])
correlated <- findCorrelation(corrMat, cutoff = 0.6)
ctrl <- trainControl(
method="repeatedcv",
repeats=5,
number=10,
classProbs = T
)
t1 <- train[, -correlated]
grid <- expand.grid(.k = c(1:20))
knnModel <- train(formula,
data = t1,
method = 'knn',
trControl = ctrl,
tuneGrid = grid,
preProcess = 'range'
)
t2 <- test[, -correlated]
knnPred <- predict(knnModel, newdata = t2)
# How do I render the decision boundary?
यह एक बहुत अच्छी प्रतिक्रिया है और मैं बहुत करीब सोचता हूं। मैंने निर्णय सीमा को साकार करने के प्रयास के साथ अपने कोड का एक सारांश अपडेट किया: https://gist.github.com/jameskyle/729945f6fa38a343b8ab। लेकिन मुझे प्राप्त ग्राफ एक राक्षसी, प्लेड गड़बड़ है (http://i.imgur.com/TYCpleT.png)। क्या यह कार्यान्वयन में त्रुटि के कारण है या यह डेटा ही है? मैंने शराब + क्लोराइड को मेरे एक्स, वाई के रूप में चुना क्योंकि वे उच्चतम महत्व की विशेषताएं थे। –
मैंने आईरिस में आधारित एक स्क्रिप्ट लिखी है जो परीक्षण सेट उत्पन्न करने के बजाय आईरिस डेटा को विभाजित करता है, मुझे एक समान आंशिक ग्राफ मिलता है। मुझे लगता है कि निर्णय सीमाएं कैसे काम करती हैं? स्क्रिप्ट: https://gist.github.com/jameskyle/ffed976dfef1cbc778d5 ग्राफ: http://i.imgur.com/UX1xmp9.png –
अपने नए डेटा भाग में, डेटा को ग्रिड की तरह होना चाहिए; मैं अपना जवाब अपडेट करूंगा। – chappers