R-KNN从分类到数字的转换

R-KNN从分类到数字的转换,r,knn,r-caret,categorical-data,R,Knn,R Caret,Categorical Data,我正在尝试使用R的插入符号包来使用应用于鲍鱼数据库的KNN,从UCI机器学习链接到。但当存在分类值时,它不允许使用KNN。 如何将该数据库中的分类值:M、F、I分别转换为数字值,如1、2、3?通过read.table读取数据时,第一列中的数据是因子。然后 data$iGender = as.integer(data$Gender) 会有用的。如果它们是字符,则迂回通过因子最简单: data$iGender= as.integer(as.factor(data$Gender)) 第一个答案似

我正在尝试使用R的插入符号包来使用应用于鲍鱼数据库的KNN,从UCI机器学习链接到。但当存在分类值时,它不允许使用KNN。 如何将该数据库中的分类值:M、F、I分别转换为数字值,如1、2、3?

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

data$iGender = as.integer(data$Gender) 
会有用的。如果它们是字符,则迂回通过因子最简单:

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

第一个答案似乎是个非常糟糕的主意。将{M,F,I}编码为{1,2,3}意味着婴儿=3*男性,男性=女性/2,依此类推

如果使用公式方法,KNN通过插入符号允许分类值作为预测值。否则,您需要将它们编码为二进制

此外,展示您的代码并提供一个可复制的示例会有很大帮助


Max

在数据集中使用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将提供字符数据类型的数字替换

尝试使用R中的knncat包,该包将分类变量转换为数字对应项


非常感谢。我试图使用数据[1]而不是$V1。这对于无序的分类变量是个坏主意。实际上,这种编码对于基于树的算法(例如xgboost)非常有用,并且在scikit learn的LabelEncoder预处理库中使用。我只是想看看R是否内置了这种功能。请问如何使用插入符号中的公式方法来允许分类变量?我可以直接抛出一个数据集k=trainy~,method='knn',trControl=train.control,preProcess=c'scale',center',pca',data=data.frametrain和分类变量吗?