怎样能才能快速的找到KNN# DataSciences - 数据科学
E*e
1 楼
一个sampling的code, 自己写的KNN的R code,因为是continuous 和norminal 混合,
连续变量用euclidean 距离, norminal变量需要另外算distance。 基本问题是这样:
总共是500个记录, 60个norminal变量。 需要找到每个记录的KNN。 每条距离搜寻需
要5seconds, 所以这个KNN需要20分钟。 因为要做bootstrap, 所以一个main
function, 运行100需要两天时间。 现在想加快这个KNN搜寻。 问题是就在norminal
距离的KNN计算,需要5秒时间。
我看了下问题。 60个norminal变量的distance 矩阵单独完成,很快。
现在的主要任务就是算每条记录的KNN,用的是两个loop, 需要从所有变量的distance
矩阵里,一对一的需要找到每个记录里每个变量所对应的具体距离,这样就很慢了。我
是通过每个distance矩阵的的row 和col names同每个记录里的变量值对应才找到需要
的distance,然后sum所有每个记录里60个变量的distance值,最后找到每个记录的KNN
。
现在问题就简化成,假设现在有60个变量各自的distanc矩阵, 怎样快速的找到每个记
录的KNN。 用double loop很慢。 能用是么sql表查询码?
谢谢。
连续变量用euclidean 距离, norminal变量需要另外算distance。 基本问题是这样:
总共是500个记录, 60个norminal变量。 需要找到每个记录的KNN。 每条距离搜寻需
要5seconds, 所以这个KNN需要20分钟。 因为要做bootstrap, 所以一个main
function, 运行100需要两天时间。 现在想加快这个KNN搜寻。 问题是就在norminal
距离的KNN计算,需要5秒时间。
我看了下问题。 60个norminal变量的distance 矩阵单独完成,很快。
现在的主要任务就是算每条记录的KNN,用的是两个loop, 需要从所有变量的distance
矩阵里,一对一的需要找到每个记录里每个变量所对应的具体距离,这样就很慢了。我
是通过每个distance矩阵的的row 和col names同每个记录里的变量值对应才找到需要
的distance,然后sum所有每个记录里60个变量的distance值,最后找到每个记录的KNN
。
现在问题就简化成,假设现在有60个变量各自的distanc矩阵, 怎样快速的找到每个记
录的KNN。 用double loop很慢。 能用是么sql表查询码?
谢谢。