我在Hive上有一个表格,其结构如下:
传感器;温度;压力
1; 23; 23
2; 34; 45
3; 45; 55
我想知道是否可以使用HiveQL UDF实现KNN算法。 目标是获取输出(例如k = 3),如:
传感器;温度;压力; 1stSensor; 2ndSensor; 3ndSensor
我感谢您的帮助
Soufs
答案 0 :(得分:0)
答案 1 :(得分:0)
euclid_distance
/ euclid_similarity
功能。
您可以使用各种相似度函数(cosine_similarity,jaccard_similarity,angular_similarity和euclid_similarity)执行k-NN,如下所示:
输入格式为字符串数组features
。
|: rowid :|: features :|
-----------------------------------------------------
| 1 | [Sensor:1, Temperature:23, Pressure:23] |
| 2 | [Sensor:2, Temperature:34, Pressure:55] |
您需要按以下方式进行自我加入:
select l.rowid, euclid_distance(l.features, r.features) as distance from mytable l LEFT OUTER JOIN mytable r
注意:对于有效的top-k相似性列表,您可以使用each_top_k
函数,如下所示: