歐幾里得距離我有蜂巢一個表與下面的結構:與HiveQL
傳感器;溫度;壓力
1; 23; 23
2; 34; 45
3; 45; 55
我想知道是否可以使用HiveQL UDF實現KNN算法。 的OBJECTIF是獲得作爲輸出(對於k = 3爲例)的表等:
傳感器;溫度;壓力; 1stSensor; 2ndSensor; 3ndSensor
我明白你幫助
Soufs
歐幾里得距離我有蜂巢一個表與下面的結構:與HiveQL
傳感器;溫度;壓力
1; 23; 23
2; 34; 45
3; 45; 55
我想知道是否可以使用HiveQL UDF實現KNN算法。 的OBJECTIF是獲得作爲輸出(對於k = 3爲例)的表等:
傳感器;溫度;壓力; 1stSensor; 2ndSensor; 3ndSensor
我明白你幫助
Soufs
euclid_distance
/euclid_similarity
自Hivemall v0.3.2-3以來,支持該功能。
您可以使用各種相似函數(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
功能如下: