目前在做一個基于資料庫搜索的軟體,原理是這樣的,我先用理論計算算出不同引陣列合下的對應的結果曲線(這個曲線用一組二維資料和坐標表示),保存在資料庫里面,然后我拿實測的曲線去和資料庫中理論曲線對比,找出最相似的曲線,這個曲線所對應的引數就是我要的結果。請問用什么相似性演算法實作這個程序呢?
uj5u.com熱心網友回復:
我覺得你要先明確一下你要的相似是什么是可以舍去無效點的相似,還是僅比較結果擬合曲線的相似
如果是1,你肯定要先通過演算法去掉噪點,再去推算結果擬合曲線
至于兩個曲線的相似,還要分到底是基于點、形狀、分段等等。
我覺得等你確定了這個去找對應的演算法就好了,不管你的需求是什么成熟的演算法都有的
uj5u.com熱心網友回復:
相似度判定演算法太多,我只挑一些比較常用的這是余弦相似度判定的簡略java代碼
public class CosineCompare {
/*余弦相似度演算法*/
public static void main(String[] args) throws Exception {
double[] curve_1 = { 1, 4, 5, 7, 8, 9, 6, 5, 3, 2, 1 }; //坐標
double[] curve_2 = { 1, 1.2, 8, 20, 9, 8, 6, 5, 3, 2, 1 }; //坐標
double x = 0, y = 0, z = 0;
for (int i = 0; i < curve_1.length; i++) {
x += curve_1[i] * curve_1[i];
y += curve_2[i] * curve_2[i];
z += curve_1[i] * curve_2[i];
}
x = Math.sqrt(x);
y = Math.sqrt(y);
System.out.println(z / (x * y));
}
}這是Fréchet相似度
https://blog.csdn.net/qq_35570161/article/details/82120424
這是一些常規解釋
https://blog.csdn.net/weixin_39050022/article/details/80732249
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/85078.html
標籤:C#
上一篇:C#繪制Voronoi圖
