Keresse euklideszi távolság a két tömb különböző hosszúságú

szavazat
0

Meg akarom találni euklideszi távolságot ellenőrizni hasonlósága szálakat.

adatbázis

Felülről kép egy festmény objektum területén sok képtípusokról adatbázisban. Képek megjelenítésére használja ezt a paining_objectmezőt. Most azt akarom megmutatni kapcsolódó képek egy kiválasztott kép összehasonlításával húrok paining_objectterületen. Tehát én használtam euklideszi távolság módszert találni hasonlóságokat a húrok.

De én szembe probléma hosszát. Az ex. Az első sorban az adatbázis négy kép típusok in paining_objectterületen, és a második sorban több mint négy képtípusokról. Szóval, hogyan tudnám a távolság mérésére ezzel a módszerrel a tömbök, amelyek eltérő hosszúságú.

A kérdést 24/10/2019 11:57
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
0

Tudjuk használni az arány több húr mérkőzést a kombinációk száma, mint a hasonlóság pontszámot.

// Assuming $firstArr and $secondArr are sets, i.e., don't contain duplicates
function similarityScore($firstArr, $secondArr) {
    $matchCount = 0;
    foreach ($firstArr as $first) {
        foreach($secondArr as $second) {
            if ($first == $second) {
                $matchCount++;
            }
        }
    }
    return $matchCount/(count($firstArr)*count($secondArr));
}
Válaszolt 24/10/2019 15:19
a forrás felhasználó

szavazat
0

nem euklideszi távolságok

A távolság két rendezetlen tömbök fogalmazható újra távolság a sorozatok között.

Egy gyors lookup mutatja létezik több távolságok képviselő közötti hasonlóság készletek, mint például

  • A Jaccard távolság

    d (a, b) = | a többek b | / | Unió b |

  • A legnagyobb különbség a mutató

    d (a, b) = 1 - | a többek b | / Max (| a |, | b |)

több távolságok (például) a papír közötti távolságok halmazok halmaza comminality

még euklideszi távolság

Azt is ki lehet kényszeríteni, hogy:

Kap minden mangában, mint a szókincs V, mondjuk mérete n. Fontolja meg a készlet R^n.

Egy sor a táblázatban is képviselteti magát, mint egy vektor va R^n: ha a sor tartalmazza a szót i, fel v[i] = 1, v[i]=0különben

Végül az euklideszi távolság triviális felvihető a vektorok azonos hosszúságú.

távolság tehát, mint

d(a,b) = || v_b - v_a ||_2 = sqrt( (v_b[0] - v_a[0])^2 + ... + (v_b[n-1] - v_a[n-1)^2)

Minden négyzet egyenlő 1IFF v_b[i]!=v_a[i]hogy szeretné számolni az elemek anem bU b not in aidem szimmetrikus különbség a és b is így átírni a távolságot:

d(a,b) = sqrt(|a \ b|)
Válaszolt 25/10/2019 11:58
a forrás felhasználó

szavazat
1

Én tettem ezt használja Jaccard távolságot az alábbiak szerint. Először létre két asztal egyedi tárgy, ahonnan tudjuk gyűjteni objektum id és a második, ahol minden tárgy jön össze elkülönül (,)

1) image_sub_main táblázat

írja kép leírása itt

2) image_main táblázat

írja kép leírása itt

3) PHP fájlt Wordpress Way

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'/>";
}

A kimenet lesz összehasonlítani a képeket először egy képet, és mutassa hasonlóság alapján%

Válaszolt 31/12/2019 06:39
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more