使用R进行数据培训,将数据预处理到PCA组件中?

时间:2016-03-12 18:10:50

标签: r machine-learning r-caret knn

我想培训一个knn使用caret::train对数字进行分类(经典问题),然后在训练前对这些功能使用PCA。

control = trainControl(method = "repeatedcv",
                       number = 10,
                       repeats = 5,
                       p = 0.9)

knnFit = train(x = trainingDigit,
               y = label,
               metric = "Accuracy",
               method = "knn",
               trControl = control,
               preProcess = "pca")

我不明白如何代表我的数据进行培训导致错误:

  

sample.int中的错误(长度(x),大小,替换,概率):     当'replace = FALSE'

时,不能采样大于人口的样本

我的训练数据表示如下(Rdata file):

List of 10
 $ : num [1:400, 1:324] 0.934 0.979 0.877 0.853 0.945 ...
 $ : num [1:400, 1:324] 0.807 0.98 0.803 0.978 0.969 ...
 $ : num [1:400, 1:324] 0.745 0.883 0.776 0.825 0.922 ...
 $ : num [1:400, 1:324] 0.892 0.817 0.835 0.84 0.842 ...
 $ : num [1:400, 1:324] 0.752 0.859 0.881 0.884 0.855 ...
 $ : num [1:400, 1:324] 0.798 0.969 0.925 0.921 0.873 ...
 $ : num [1:400, 1:324] 0.964 0.93 0.97 0.857 0.926 ...
 $ : num [1:400, 1:324] 0.922 0.939 0.958 0.946 0.867 ...
 $ : num [1:400, 1:324] 0.969 0.947 0.916 0.861 0.86 ...
 $ : num [1:400, 1:324] 0.922 0.933 0.978 0.968 0.971 ...

标签如下(.Rdata file):

List of 10
 $ : num [1:400] 0 0 0 0 0 0 0 0 0 0 ...
 $ : num [1:400] 1 1 1 1 1 1 1 1 1 1 ...
 $ : num [1:400] 2 2 2 2 2 2 2 2 2 2 ...
 $ : num [1:400] 3 3 3 3 3 3 3 3 3 3 ...
 $ : num [1:400] 4 4 4 4 4 4 4 4 4 4 ...
 $ : num [1:400] 5 5 5 5 5 5 5 5 5 5 ...
 $ : num [1:400] 6 6 6 6 6 6 6 6 6 6 ...
 $ : num [1:400] 7 7 7 7 7 7 7 7 7 7 ...
 $ : num [1:400] 8 8 8 8 8 8 8 8 8 8 ...
 $ : num [1:400] 9 9 9 9 9 9 9 9 9 9 ...

1 个答案:

答案 0 :(得分:0)

问题在于您对数据的表示。在开始训练之前尝试这个:

[$](([1-9]+\.?\d*)|([0]\.\d*)|[0])

您需要将数据按照数据框架或类似数据框架的格式进行处理,其中一列代表您的不同结果,其他列是每种结果的特征。

此外,如果您想进行分类而不是回归,您的结果必须是label <- factor(c(label, recursive = TRUE)) trainingDigit <- data.frame(do.call(rbind, trainingDigit))

为了清楚起见,我尝试按如下方式运行训练代码,它的工作正常。

factor