查找两个不同长度的数组的欧式距离

科马尔·戈亚尼(Komal Goyani)

我想找到欧几里得距离来检查字符串的相似性。

数据库映像

从绘画对象字段中的图像上方,数据库中有许多图像类型。正在使用此paining_object字段显示图像现在,我想通过比较paining_object字段中的字符串来显示一个选定图像的相关图像因此,我已经使用欧几里得距离方法来查找字符串的相似性。

但是我正面临长度的问题。对于前。在数据库的第一行中,paining_object字段中有四种图像类型,在第二行中,有四种以上图像类型。因此,对于长度不等的数组,我如何用这种方法测量距离。

克里希纳·萨瓦尼(Krishna Savani)

我通过使用Jaccard距离来做到这一点,如下所示。首先为唯一的对象创建了两个表,从中我们可以从id收集对象,第二个表中的所有对象与(,)分隔在一起

1)image_sub_main

在此处输入图片说明

2)image_main

在此处输入图片说明

3)PHP文件作为Wordpress方式

global $wpdb;
$post_id = $wpdb->get_results("SELECT * FROM `image_main`");

$i=1;
$finimgarray = array();
$aa = array();
$bb = array();
$firstarray = array('similarity' =>100 , 'id' => $post_id[0]->id );

foreach($post_id as $key => $post){
    if($i < count($post_id)){
    $arraya =$post_id[0]->image_types;
    $a = explode(",",$arraya);
    $arrayb =$post_id[$i]->image_types;
    $b = explode(",",$arrayb);
    $array = array_unique (array_merge ($a, $b));
    $result=array_intersect($a,$b);
    $finalres = count($result) / count($array)*100 ;
    $finimgarray[] = array('similarity' =>round($finalres, 2) , 'id' => $post_id[$i]->id );
 }
    $i++;
}

array_push($finimgarray, $firstarray);
arsort($finimgarray);

foreach($finimgarray as $findimgarr){
  $id = $findimgarr['id'];
  $image = $wpdb->get_row("SELECT * FROM `image_main` WHERE `id` = $id ");
  echo "<img src='$image->image'/>";
}

您的输出将图像与第一张图像进行比较,并根据相似度显示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章