R - 为KNN

时间:2015-05-05 16:25:17

标签: r knn r-caret categorical-data

我试图使用R的Caret包来使用适用于"鲍鱼的KNN"来自UCI机器学习的数据库(链接到data)。但是当它有分类值时,它不允许使用KNN。 如何将分类值(在此数据库中"M","F","I")转换为数值,例如1,2,3

5 个答案:

答案 0 :(得分:14)

第一个答案似乎是一个非常糟糕的主意。将{"M","F","I"}编码为{1, 2, 3}意味着Infant = 3 * MaleMale = Female/2等等。

如果您使用公式方法,

KNN通过caret确实允许将分类值作为预测变量。否则,您需要将它们编码为二进制dummy variables

此外,显示您的代码并具有可重复的示例将有很大帮助。

最高

答案 1 :(得分:2)

通过read.table读取数据时,第一列中的数据是因子。然后

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

会奏效。如果它们是角色,那么通过因子的绕行是最简单的:

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

答案 2 :(得分:1)

在您的数据集中使用kNN算法的最简单方法之一,其中一个功能是分类:如您所提到的“M”,“F”和“I”如下: 只需在您的数据集存在的CVS或Excel文件中,在右列中继续,将M更改为1,将F更改为2,将I更改为3.在这种情况下,数据集中有离散值,您可以轻松使用kNN算法R上。

答案 3 :(得分:0)

  

您只需使用stringsAsFactors = TRUE

读取文件即可

实施例

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

stringasfactors将为Char数据类型

提供数字替换

答案 4 :(得分:0)

尝试在R中使用knncat程序包,该程序包将分类变量转换为数字变量。

Here's the link for the package