R - 从分类转换为 KNN 的数字
R - convert from categorical to numeric for KNN
我正在尝试使用 R 的 Caret 包来使用从 UCI 机器学习(link 到 data)应用于 "abalone" 数据库的 KNN。但是当有分类值时,它不允许使用 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}
意味着 Infant = 3 * Male
、Male = Female/2
等。
如果您使用公式方法,KNN
通过 caret
确实允许分类值作为预测变量。否则你需要将它们编码为二进制 dummy variables。
此外,展示您的代码并有一个可重现的示例会有很大帮助。
最大
在数据集中使用 kNN 算法的最简单方法之一,其中一个特征是分类的:如您提到的 "M"、"F" 和 "I" 如下:
就在您的 CVS 或 Excel 文件中,您的数据集存在,在右栏中继续并将 M 更改为 1,将 F 更改为 2,将 I 更改为 3。在这种情况下,您的数据集中有离散值,您可以轻松地使用 R.
使用 kNN 算法
You can simply read the file with stringsAsFactors = TRUE
例子
data_raw<-read.csv('...../credit-default.csv', stringsAsFactors = TRUE)
stringasfactors 将用数字替换 Char 数据类型
尝试使用 R 中的 knncat 包,它将分类变量转换为对应的数值。
我正在尝试使用 R 的 Caret 包来使用从 UCI 机器学习(link 到 data)应用于 "abalone" 数据库的 KNN。但是当有分类值时,它不允许使用 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}
意味着 Infant = 3 * Male
、Male = Female/2
等。
KNN
通过 caret
确实允许分类值作为预测变量。否则你需要将它们编码为二进制 dummy variables。
此外,展示您的代码并有一个可重现的示例会有很大帮助。
最大
在数据集中使用 kNN 算法的最简单方法之一,其中一个特征是分类的:如您提到的 "M"、"F" 和 "I" 如下: 就在您的 CVS 或 Excel 文件中,您的数据集存在,在右栏中继续并将 M 更改为 1,将 F 更改为 2,将 I 更改为 3。在这种情况下,您的数据集中有离散值,您可以轻松地使用 R.
使用 kNN 算法You can simply read the file with stringsAsFactors = TRUE
例子
data_raw<-read.csv('...../credit-default.csv', stringsAsFactors = TRUE)
stringasfactors 将用数字替换 Char 数据类型
尝试使用 R 中的 knncat 包,它将分类变量转换为对应的数值。