簡體   English   中英

R - 將 KNN 的分類轉換為數字

[英]R - convert from categorical to numeric for KNN

我正在嘗試使用 R 的 Caret 包來使用 KNN 應用於 UCI 機器學習中的“鮑魚”數據庫(鏈接到數據)。 但是當有分類值時它不允許使用 KNN。 如何將分類值(在此數據庫中: "M","F","I" )分別轉換為數值,例如1,2,3

第一個答案似乎是一個非常糟糕的主意。 {"M","F","I"}編碼為{1, 2, 3}意味着Infant = 3 * MaleMale = Female/2等等。

如果您使用公式方法,通過caret KNN確實允許分類值作為預測變量。 否則,您需要將它們編碼為二進制虛擬變量

此外,展示您的代碼並提供可重現的示例也會有很大幫助。

最大限度

通過read.table讀入數據時,第一列的數據為因子。 然后

data$iGender = as.integer(data$Gender) 

會工作。 如果他們是性格,那么通過因素繞道是最簡單的:

data$iGender= as.integer(as.factor(data$Gender))

在您的數據集中使用 kNN 算法的最簡單方法之一,其中一個特征是分類的:如您所提到的“M”、“F”和“I”如下: 就在您的數據集存在的 CVS 或 Excel 文件中,繼續在右列中將 M 更改為 1,將 F 更改為 2,將 I 更改為 3。在這種情況下,您的數據集中有離散值,您可以使用 R 輕松使用 kNN 算法。

您可以簡單地使用 stringsAsFactors = TRUE 讀取文件

例子

data_raw<-read.csv('...../credit-default.csv', stringsAsFactors = TRUE)

stringasfactors 將為 Char 數據類型提供數字替換

嘗試在 R 中使用 knncat 包,它將分類變量轉換為數值對應物。

這是包的鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM