2017-03-06 78 views
0

我有一些虛擬數據由99行數據組成,一列是 自由文本數據,一列是cateogry。它已被分類爲客戶服務或未與客戶服務相關。KNN使用R - 在生產

我將99行數據傳遞到我的R腳本中,創建了一個語料庫,清理並解析了我的數據並將其轉換爲DocumentTermMatrix。然後我將DTM轉換爲數據框以便於查看。我將該類別綁定到我的新數據框。然後我將它分爲50/50,這樣我的訓練集中就有50排,我的測試集中有49排。我也拉出了類別。

train <- sample(nrow(mat.df), ceiling(nrow(mat.df) * .5)) 
test <- (1:nrow(mat.df))[- train] 
cl <- mat.df[, "category"] 

然後我創建了剝離出來類別列模型,並通過這種新的模式,以我的KNN

knn.pred <- knn(modeldata[train, ], modeldata[test, ], cl[train]) 
conf.mat <- table("Predictions" = knn.pred, Actual = cl[test]) 
conf.mat 

那麼我可以計算出準確度,生成交叉表或預測出口測試模型的準確性。

我現在正努力想要得到我的頭,我是如何使用新數據前進的模型。

因此,如果我有10個新的自由文本數據行尚未被手動分類,然後我如何運行我剛創建的knn模型來分類這些額外的數據?

也許我只是誤解下一個過程。

感謝,

回答

0

你剛發現的保持退出測試中的表現用同樣的方法:

knn.pred.newdata <- knn(modeldata[train, ], completely_new_data, cl[train]) 

在KNN模型,訓練數據本質上是模型的一部分。既然它只是找到最近的訓練點,如果你沒有他們的座標,你怎麼知道這些是什麼?這就是說,你爲什麼要使用KNN模型而不是更現代的東西(支持向量機,隨機森林,Boosted樹,神經網絡)? KNN模型與數據點的數量相差甚遠。

+0

感謝您的迴應,我確信我嘗試過,並且給了我一個錯誤,所以認爲我錯了。我會再去一次。關於使用KNN。唯一真正的原因是,這在調查谷歌時似乎最合適。我對文本分析完全陌生。 – Richard