我试图使用R的Caret包来使用适用于"鲍鱼的KNN"来自UCI机器学习的数据库(链接到data)。但是当它有分类值时,它不允许使用KNN。
如何将分类值(在此数据库中"M","F","I"
)转换为数值,例如1,2,3
?
答案 0 :(得分:14)
第一个答案似乎是一个非常糟糕的主意。将{"M","F","I"}
编码为{1, 2, 3}
意味着Infant = 3 * Male
,Male = 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程序包,该程序包将分类变量转换为数字变量。