让我给出一些背景背景:我有100个向量的列表,每个向量有50个维度,我想把前50个向量与A类联系起来,最后一个向量与B类相关联。
我的问题是:为了以后应用kNN,我如何做到这一点?哪个库的kNN方法更适合这一点?
提前谢谢。
发布于 2014-03-25 05:19:52
我想到的第一个选项之一是从向量列表中创建一个data.frame,创建因子指示符,然后从类包中使用knn。
从向量列表生成一个data.frame
使用rbind,创建一个矩阵,然后使用as.data.frame函数(在这个问题中有更多的例子)。假设l是一个向量列表:
data <- as.data.frame(do.call(rbind, l))因子指示器
class <- as.factor(c(rep("A", 50), rep("B", 50)))使用类包kNN 进行分类
如果您没有单独的数据进行测试,最好的方法可能是
train.ind <- sample(1:100, 75) # making indexes to split data into 75% train and 25% test
resulting.classes <- knn(train = data[train.ind, ], test = data[-train.ind, ], cl = class)如果您有单独的列车和测试数据,那么只需使用
resulting.classes <- knn(train = train.data, test = test.data, cl = class)kNN的其他可能有用的选择-- ‘’kknn‘包裹和‘'FNN’包裹,但类包似乎是简单的kNN分类中最简单的。
https://stackoverflow.com/questions/22624933
复制相似问题