Матрица путаницы должна быть четко разъяснена - PullRequest
0 голосов
/ 31 мая 2019

Привет! Я попытался напечатать матрицу путаницы для набора данных, используя R. Ниже приведены мои результаты

enter image description here

Мои переменные класса содержат двоичные значения. Значение Medv - это моя переменная класса, преобразованная в двоичную форму со значением Medv дома, превышающим 230 К, равным 1, или 0 в противном случае. Когда я вижу матрицу путаницы, в конце обозначается положительный класс как 0. Что это значит? Эти результаты искажают мои данные?

мой код R на данный момент,

# Load CART packages
library(rpart)
library(rpart.plot)
library(caTools)
library(caret)
library (pROC)

housing_data = read.csv('housing.csv')

summary(housing_data)

housing_data = na.omit(housing_data)

# CART model
latlontree = rpart(Medv ~ Crim + Rm, data=housing_data , method = "class")

# Plot the tree using prp command defined in rpart.plot package
prp(latlontree)

# Split the data for Machine Learning


set.seed(123)
split = sample.split(housing_data$Medv, SplitRatio = 0.8)
train = subset(housing_data, split==TRUE)
test = subset(housing_data, split==FALSE)


#print (train)
#print (test)

# Create a CART model
tree = rpart(Medv ~ Crim + Zn + Indus + Chas + Nox + Rm + Age + Dis + Rad + Tax + Ptratio + B + Lstat , data=train , method = "class")

prp(tree)


#Decision tree prediction


#tree.pred = predict(tree, test)

pred = predict(tree,test, type="class")


#print (pred)

table(pred, test$Medv)

table(factor(pred, levels=min(test$Medv):max(test$Medv)), 
      factor(test$Medv, levels=min(test$Medv):max(test$Medv)))

# If p exceeds threshold of 0.5, M else R: m_or_r
#m_or_r <- ifelse(p > 0.5, 1, 0)
#print (m_or_r)

# Convert to factor: p_class
#p_class <- factor(m_or_r, levels = test$Medv)

# Create confusion matrix
confusionMatrix(table(factor(pred, levels=min(test$Medv):max(test$Medv)), 
      factor(test$Medv, levels=min(test$Medv):max(test$Medv))))

#print (tree.sse)


#ROC Curve

#Obtaining predicted probabilites for Test data
tree.probs=predict(tree,
                 test,
                 type="prob")
head(tree.probs)


#Calculate ROC curve
rocCurve.tree <- roc(test$Medv,tree.probs[,2])
#plot the ROC curve
plot(rocCurve.tree,col=c(4))

auc <- auc (test$Medv,tree.probs[,2])
print (auc)


#creating a dataframe with a single row


x <- data.frame("Crim"= c(0.03), "Zn"=c(13), "Indus"=c(3.5), "Chas"=c(0.3), "Nox"=c(0.58), "Rm"=c(4.1), "Age"=c(68), "Dis"=c(4.98), "Rad" =c(3), "Tax"=c(225), "Ptratio"=c(17), "B"=c(396), "Lstat"=c(7.56))

#Obtaining predicted probabilites for Test data
probability2=predict(tree,
                 x,
                 type="prob")

print (probability2)

#Obtaining predicted class for Test data
probability3=predict(tree,
                 x,
                 type="class")
print (probability3)

Изображение набора данных

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...