我正在尝试使用r的插入软件包来使用UCI机器学习中应用于"鲍鱼"数据库的KNN(链接到数据)。但是,当有分类值时,它不允许使用KNN。如何将分类值(在此数据库:"M","F","I"
中)分别转换为数值,例如1,2,3
?
第一个答案似乎是一个非常糟糕的主意。将{"M","F","I"}
编码为{1, 2, 3}
意味着Infant = 3 * Male
,Male = Female/2
等。
KNN
通过caret
使用公式方法,确实允许分类值作为预测指标。否则,您需要将它们编码为二进制虚拟变量。
另外,显示您的代码并拥有可再现的示例将有很大帮助。
最大
通过read.table
读取数据时,第一列中的数据是因素。然后
data$iGender = as.integer(data$Gender)
会起作用。如果它们是性格,则通过因子绕道最简单:
data$iGender= as.integer(as.factor(data$Gender))
使用数据集中使用KNN算法的最简单方法之一,其功能之一是分类:" M"," F"one_answers" I",如您所提到的:仅在您的数据集EXSIT的CVS或Excel文件中,在右列中继续,然后将M更改为1和F,然后将I更改为3,然后将IT到3。在这种情况下,您可以在数据集中具有离散值,并且可以轻松地使用KNN算法使用KNN算法r。
您可以简单地使用stringsasfactor = true
读取文件
示例
data_raw<-read.csv('...../credit-default.csv', stringsAsFactors = TRUE)
StringAsFactor将给出Char Datatypes的数值替代
尝试使用r中的knncat软件包,该软件包将分类变量转换为数值对应物。
这是软件包的链接