【发布时间】:2016-02-13 01:18:02
【问题描述】:
我有以下数据集:
TRAIN数据集
Sr A B C XX
1 0.09 0.52 11.1 high
2 0.13 0.25 11.1 low
3 0.20 0.28 11.1 high
4 0.29 0.50 11.1 low
5 0.31 0.58 11.1 high
6 0.32 0.37 11.1 high
7 0.37 0.58 11.1 low
8 0.38 0.40 11.1 low
9 0.42 0.65 11.1 high
10 0.42 0.79 11.1 low
11 0.44 0.34 11.1 high
12 0.45 0.89 11.1 low
13 0.57 0.72 11.1 low
TEST数据集
Sr A B C XX
1 0.54 1.36 9.80 low
2 0.72 0.82 9.80 low
3 0.19 0.38 9.90 high
4 0.25 0.44 9.90 high
5 0.29 0.54 9.90 high
6 0.30 0.54 9.90 high
7 0.42 0.86 9.90 low
8 0.44 0.86 9.90 low
9 0.49 0.66 9.90 low
10 0.54 0.76 9.90 low
11 0.54 0.76 9.90 low
12 0.68 1.08 9.90 low
13 0.88 0.51 9.90 high
Sr:序列号
A-C:参数
XX:输出二进制参数
我正在尝试使用 KNN 分类器来开发具有 5 个最近邻的预测模型。以下是我写的代码:
train_input <- as.matrix(train[,-ncol(train)])
train_output <- as.factor(train[,ncol(train)])
test_input <- as.matrix(test[,-ncol(test)])
prediction <- knn(train_input, test_input, train_output, k=5, prob=TRUE)
resultdf <- as.data.frame(cbind(test[,ncol(test)], prediction))
colnames(resultdf) <- c("Actual","Predicted")
RESULT 数据集
A P
1 2 2
2 2 2
3 1 2
4 1 1
5 1 1
6 1 2
7 2 2
8 2 2
9 2 2
10 2 2
11 2 2
12 2 1
13 1 2
我有以下顾虑:
- 我应该怎么做才能获得概率值?这是变高还是变低的概率,即 P(high) 或 P(low)?
- 级别设置为 1 (
high) 和 2 (low),这是基于首次出现的顺序。如果在训练数据集中low出现在high之前,则它的值为1。我觉得这不是一个好习惯。无论如何我可以避免这种情况吗? - 如果分类器中有更多类(超过 2 个),我将如何在分类器中处理这个问题?
我正在使用class 和e1071 库。
谢谢。
【问题讨论】:
-
这不只涉及使用
table和prop.table??? -
您能详细说明一下吗?我对 R 比较陌生。
-
prop.table(table(RESULT))
标签: r probability knn