br.usp.ime.mac5855.knn
Class KnnPonderado<E>

java.lang.Object
  extended by br.usp.ime.mac5855.knn.KnnPonderado<E>
Type Parameters:
E - O tipo de objeto a ser avaliado.

public final class KnnPonderado<E>
extends java.lang.Object

Esta classe implementa o algoritmo Knn. Para utilizá-la, basta criar uma instância informando uma estratégia adequada e populá-la com uma relação de preços dos elementos. Depois de populada, basta utilizar os métodos estimarPreco(E) ou probabilidadePrecoFaixa(E, double, double) para fazer-se predições. Novos elementos podem ser adicionados ou removidos posteriormente por meio dos métodos add(E, double), addAll(Map<E, Double>) e remove(E). O preço de um item pode ser atualizado ao adicioná-lo novamente com um novo preço. Um mesmo item nunca é armazenado mais do que uma vez em uma mesma instância desta classe.

Author:
Victor Williams Stafusa da Silva
See Also:
KnnStrategy

Constructor Summary
KnnPonderado(KnnStrategy<E> strategy)
          Cria uma instância do algoritmo Knn não populada.
KnnPonderado(java.util.Map<E,java.lang.Double> elementos, KnnStrategy<E> strategy)
          Cria uma instância do algoritmo Knn já populada.
 
Method Summary
 void add(E elemento, double preco)
          Adiciona um elemento a lista de preços.
 void addAll(java.util.Map<E,java.lang.Double> elementos)
          Adiciona um elemento a lista de preços.
 double estimarPreco(E elemento)
          Dá uma estimativa de preço para um objeto.
 double probabilidadePrecoFaixa(E elemento, double precoMinimo, double precoMaximo)
          Calcula a probabilidade (entre 0.0 e 1.0) de um objeto ter um preço dentro de uma determinada faixa.
 void remove(E elemento)
          Remove um elemento da lista de preços.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

KnnPonderado

public KnnPonderado(KnnStrategy<E> strategy)
Cria uma instância do algoritmo Knn não populada.

Parameters:
strategy - A estratégia a ser usada para fazer-se predições, ponderações, etc.
Throws:
java.lang.IllegalArgumentException - Se a estratégia for null.

KnnPonderado

public KnnPonderado(java.util.Map<E,java.lang.Double> elementos,
                    KnnStrategy<E> strategy)
Cria uma instância do algoritmo Knn já populada.

Parameters:
elementos - Relação de preços inicial dos elementos.
strategy - A estratégia a ser usada para fazer-se predições, ponderações, etc.
Throws:
java.lang.IllegalArgumentException - Se a estratégia for null.
Method Detail

add

public void add(E elemento,
                double preco)
Adiciona um elemento a lista de preços. Caso o elemento já exista na lista de preços, o preço dele é atualizado.

Parameters:
elemento - O elemento a ser adicionado.
preco - O preço do elemento.
Throws:
java.lang.IllegalArgumentException - Se o elemento a ser adicionado for null.

addAll

public void addAll(java.util.Map<E,java.lang.Double> elementos)
Adiciona um elemento a lista de preços.

Parameters:
elementos - Uma relação dos elementos e dos respectivos preços a ser adicionada.
Throws:
java.lang.IllegalArgumentException - Se a relação de elementos a ser adicionada for null.

remove

public void remove(E elemento)
Remove um elemento da lista de preços. Caso o elemento não exista na lista de preços ou se este for null, então nada acontece.

Parameters:
elemento - O elemento a ser removido.

estimarPreco

public double estimarPreco(E elemento)
Dá uma estimativa de preço para um objeto.

Parameters:
elemento - O objeto a ter o preço estimado.
Returns:
O preço estimado. No caso de não ser possível estimar-se o preço, zero é retornado.
Throws:
java.lang.IllegalArgumentException - Se o elemento a ter o preço estimado for null.

probabilidadePrecoFaixa

public double probabilidadePrecoFaixa(E elemento,
                                      double precoMinimo,
                                      double precoMaximo)
Calcula a probabilidade (entre 0.0 e 1.0) de um objeto ter um preço dentro de uma determinada faixa.

Parameters:
elemento - O objeto do qual deseja-se calcular a probabilidade do preço estar na faixa determinada.
precoMinimo - Início da faixa de preços.
precoMaximo - Fim da faixa de preços.
Returns:
A probabilidade do preço do elemento dado estar dentro da faixa especificada, em uma escala de 0.0 a 1.0.
Throws:
java.lang.IllegalArgumentException - Se o elemento determinado for null ou se o início da faixa de preços for maior do que o fim.