将数据帧转换为矩阵并返回是否有效?

时间:2021-01-29 15:14:24

标签: r dataframe machine-learning matrix knn

我正在开发比类库提供的更全面的 KNN 版本。我希望添加一些小内容,例如:

  1. 将字符变量变成虚拟变量
  2. (可选)重新调整尺寸
  3. 根据方差计算每个维度的权重
  4. 为每个类预先计算(一个或多个)原型
  5. (实验性)而不是使用 K 参数使用所有示例使用基于加权投票的 距离
  6. ...

现在,函数的输入几乎总是数据帧,但经过一些操作(即制作假人)后,它们将完全是数字。在继续计算距离等之前将中间输出转换为矩阵,然后将其转换回数据帧并将预测添加到其中是否值得?

KNN_pred = function(train,test,target){

 distance = test%>%
    rbind(train)%>%
    **as.matrix()%>%**
    dist()%>%
    as.matrix()%>%
    **as_tibble()%>%**
    select(-seq(1,nrow(test)))%>%
    slice_head(n = nrow(test))%>%
    raise_to_power(-2)
    

}

这是我正在尝试做的一小部分摘录。最有争议的部分用星号包围。我可以计算距离,而无需先将其转换为矩阵。在计算距离后将其转换为 tibble 也是可选的,但我更喜欢 dplyr 而不是基本 R 子集,但它可以保留为矩阵。

顺便提一下,您能否推荐一些数据集来测试其准确性和速度?到目前为止,我一直在使用 Iris 数据集,但在这方面取得好的结果似乎并不那么具有挑战性。

0 个答案:

没有答案