2015-11-11 107 views
0

我有以下數據集:獲取概率中的R

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 

我有以下的憂慮:

  1. 我應該怎麼做才能獲得概率值?這是一個高或低的概率,即P(高)或P(低)?
  2. 級別設置爲1(high)和2(low),這是基於首次出現的順序。如果low在火車數據集中的high之前出現,則它的值爲1.我認爲這不是好習慣。無論如何,我可以避免這種情況嗎?
  3. 如果分類器中有更多的類(超過2個),我將如何在分類器中處理這個問題?

我使用的是classe1071庫。 謝謝。引入「文本」的說法掃描前建成

+0

這不就是使用'table'和'prop.table'嗎? –

+0

請您詳細說明一下嗎?我對R比較陌生。 – AngryPanda

+0

'prop.table(table(RESULT))' –

回答

0

效用函數:

rd.txt <- function (txt, header = TRUE, ...) 
{ tconn <- textConnection(txt) 
    rd <- read.table(tconn, header = header, ...) 
    close(tconn) 
    rd} 

RESULT <- rd.txt(" 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 
") 

> prop.table(table(RESULT)) 
    P 
A   1  2 
    1 0.15385 0.23077 
    2 0.07692 0.53846 

您還可以設置prop.table交付的行或列的比例(AKA概率)。