Localizar distância euclidiana de dois matriz de comprimento diferente

votos
0

Eu quero encontrar a distância euclidiana para verificar similaridade de strings.

de

De acima em um campo objeto pintura, existem muitos tipos de imagens no banco de dados. Imagens está exibindo usando este paining_objectcampo. Agora eu quero mostrar imagens relacionadas de uma imagem selecionada, comparando cordas de paining_objectcampo. Então, eu tenho utilizado o método de distância euclidiana para encontrar semelhanças de cordas.

Mas eu estou enfrentando problema com comprimento. Por ex. Na primeira linha do banco de dados, existem quatro tipos de imagem em paining_objectcampo e na segunda fila há mais de quatro tipos de imagem. Assim, como i Pode medir a distância com este método para as matrizes que têm comprimento desigual.

Publicado 24/10/2019 em 11:57
fonte usuário
Em outras línguas...                            


3 respostas

votos
0

Podemos usar a relação do número de partidas de cadeia para o número total de combinações como a pontuação de similaridade.

// 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));
}
Respondeu 24/10/2019 em 15:19
fonte usuário

votos
0

distâncias não euclidiano

A distância entre duas matrizes não ordenadas pode ser reformulada como a distância entre as séries.

A pesquisa rápido mostra que existe várias distâncias representando a semelhança entre as séries, tal como

  • o Jaccard distância

    d (a, b) = | a, inter b | / | Uma união b |

  • a métrica de diferença máxima

    d (a, b) = 1 - | um, inter b | / Max (| a |, | b |)

há mais distâncias (por exemplo) no papel Distâncias entre as séries em conjunto comminality

distância ainda euclidiana

Você ainda pode forçá-lo:

Tire todas as suas mangas como um vocabulário V, dizem tamanho n. Considere o conjunto R^n.

A linha da tabela pode ser representada como um vetor vde R^n: se a linha contém a palavra i, put v[i] = 1, v[i]=0caso contrário

Finalmente, a distância euclidiana pode trivialmente ser aplicado sobre os vectores de mesmo comprimento.

distanciar, assim, ser como

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)

Cada quadrado é igual a 1sse v_b[i]!=v_a[i]que é que você quer para contar os elementos em anão em bU b not in aidem a diferença simétrica de um e b Assim, você pode reescrever a sua distância:

d(a,b) = sqrt(|a \ b|)
Respondeu 25/10/2019 em 11:58
fonte usuário

votos
1

Eu fiz isso usando Jaccard distância como abaixo. Primeiro criado duas tabelas para o objeto único de onde podemos recolher objeto do id e do segundo, onde todos os objectos vem junto separado de (,)

1) image_sub_main Tabela

digite descrição da imagem aqui

2) image_main Tabela

digite descrição da imagem aqui

3) arquivo PHP como 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'/>";
}

Sua saída vai comparar imagens imagem de um primeiro para e mostrar de acordo com a similaridade%

Respondeu 31/12/2019 em 06:39
fonte usuário

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