Βρείτε Ευκλείδεια απόσταση των δύο σειρά από διαφορετικού μήκους

ψήφοι
0

Θέλω να βρω Ευκλείδεια απόσταση για να ελέγξει την ομοιότητα των χορδών.

Βάση

Από την παραπάνω εικόνα σε ένα πεδίο αντικειμένου ζωγραφικής υπάρχουν πολλοί τύποι εικόνα στη βάση δεδομένων. Εικόνες εμφανίζει τη χρήση αυτού του paining_objectτομέα. Τώρα θέλω να δείξω σχετικές εικόνες μιας επιλεγμένης εικόνας με τη σύγκριση χορδές από paining_objectτο πεδίο. Έτσι έχω χρησιμοποιήσει Ευκλείδεια μέθοδο απόσταση για να βρούμε ομοιότητες των χορδών.

Αλλά εγώ είμαι αντιμετωπίζει πρόβλημα με το μήκος. Για ex. Στην πρώτη σειρά από τη βάση δεδομένων υπάρχουν τέσσερις τύποι εικόνα στο paining_objectπεδίο και στη δεύτερη σειρά υπάρχουν περισσότερα από τέσσερα είδη εικόνας. Έτσι, πώς θα μπορούσα να τη μέτρηση της απόστασης με τη μέθοδο αυτή για τις διατάξεις που έχουν άνισου μήκους.

Δημοσιεύθηκε 24/10/2019 στις 11:57
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
0

Μπορούμε να χρησιμοποιήσουμε την αναλογία του αριθμού των αγώνων εγχόρδων με το συνολικό αριθμό των συνδυασμών ως το σκορ ομοιότητας.

// 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));
}
Απαντήθηκε 24/10/2019 στις 15:19
πηγή χρήστη

ψήφοι
0

μη αποστάσεις ευκλείδεια

Η απόσταση μεταξύ δύο μη διατεταγμένη συστοιχίες μπορεί να αναδιατυπωθεί ως απόσταση μεταξύ των σετ.

Μια γρήγορη αναζήτηση δείχνει υφίσταται αρκετές αποστάσεις που αντιπροσωπεύει την ομοιότητα μεταξύ των συνόλων, όπως

  • η Jaccard απόσταση

    d (a, b) = | α μεταξύ β | / | Μια ένωση β |

  • η μετρική μέγιστη διαφορά

    d (a, b) = 1 - | α μεταξύ β | / Max (| a |, | b |)

υπάρχουν περισσότερες αποστάσεις (για παράδειγμα) στο χαρτί Αποστάσεις μεταξύ των σετ στο πλατό comminality

ακόμα Ευκλείδεια απόσταση

Μπορείτε να εξακολουθεί να ισχύει:

Πάρτε όλα τα μάγκας σας ως ένα λεξιλόγιο V, δηλαδή το μέγεθος n. Ας εξετάσουμε το σύνολο R^n.

Μια σειρά από το τραπέζι σας μπορεί να παρασταθεί ως φορέας vτου R^n: αν η σειρά περιέχει λέξη i, πώλησης v[i] = 1, v[i]=0διαφορετικά

Τέλος η Ευκλείδεια απόσταση μπορεί trivially να εφαρμοστεί επί των φορέων των ίδιου μήκους.

απόσταση έτσι να είναι σαν

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)

Κάθε τετράγωνο είναι ίσο με 1ανν v_b[i]!=v_a[i]που θέλετε να μετρήσετε τα στοιχεία της aόχι στο bU b not in aidem τη συμμετρική διαφορά των a και b Μπορείτε να ξαναγράψετε έτσι την απόστασή σας:

d(a,b) = sqrt(|a \ b|)
Απαντήθηκε 25/10/2019 στις 11:58
πηγή χρήστη

ψήφοι
1

Έχω το έκανε αυτό με τη χρήση Jaccard απόσταση, όπως παρακάτω. Πρώτα δημιούργησε δύο πίνακες για το μοναδικό αντικείμενο απ 'όπου μπορούμε να συλλέξουμε αντικείμενο από το id και το δεύτερο, όπου όλα αντικειμένου έρχεται μαζί χωρίζονται από το (,)

1) image_sub_main Πίνακας

εισάγετε περιγραφή της εικόνας εδώ

2) image_main Πίνακας

εισάγετε περιγραφή της εικόνας εδώ

3) το αρχείο PHP, όπως 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'/>";
}

εξόδου σας θα συγκρίνει τις εικόνες σε πρώτη εικόνα και να δείξει σύμφωνα με την ομοιότητα%

Απαντήθηκε 31/12/2019 στις 06:39
πηγή χρήστη

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