Solucionado (ver solução)
Solucionado
(ver solução)
12
respostas

Meu RecomendaProdutos está com erro

Meu erro produto está com erro nesta linha de comando :

UserSimilarity similarity = new PearsonCorrelationSimilarity(model);

Diz que é para remover o argumento Pearson, Dar um cast ou mudar o tipo de similary para pearson... porém nenhum dos 3 funcionam!

package br.com.alura.recomendador;

import java.io.File; import java.io.IOException; import java.util.List;

import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.impl.model.file.FileDataModel; import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender; import org.apache.mahout.cf.taste.model.DataModel; import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood; import org.apache.mahout.cf.taste.recommender.RecommendedItem; import org.apache.mahout.cf.taste.recommender.UserBasedRecommender; import org.apache.mahout.cf.taste.similarity.UserSimilarity; import org.apache.mahout.math.hadoop.similarity.cooccurrence.measures.PearsonCorrelationSimilarity;

public class RecomendaProdutos { public static void main(String[] args) throws IOException, TasteException { File file = new File("dados.csv"); DataModel model = new FileDataModel(file);

    UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
    UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
    UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);

    List<RecommendedItem> recommendations = recommender.recommend(6, 4);
    for (RecommendedItem recommendation : recommendations) {
        System.out.println(recommendation);
    }

}

}

12 respostas

Exibe este erro no console:

Exception in thread "main" java.lang.Error: Unresolved compilation problems: The constructor PearsonCorrelationSimilarity(DataModel) is undefined Type mismatch: cannot convert from PearsonCorrelationSimilarity to UserSimilarity

at br.com.alura.recomendador.RecomendaProdutos.main(RecomendaProdutos.java:23)

Tenta :

FileDataModel model = new FileDataModel(new File(dados.csv));

Olá André, desculpe, eu errei o nome do arquivo, ele é o RecomendadorDeProdutosBuilder

A linha de comando é:

    UserSimilarity similarity = new PearsonCorrelationSimilarity(produtos);

E sugere para que add o cast ou troque o tipo de similarity para PearsonCorrelationSimilarity

Tentei inserir o código em que você recomendou, mas, não deu certo, ficou com mais erros ainda.

Blz cara, marca a sua resposta como solução para encerrarmos o tópico.

Éu falei que a linha de comando que está dando erro e o que sugere, ainda não foi resolvido, mesmo tentando essas sugestões do eclipse.

Ainda estou no erro.

Engraçado na transcrição do professor está sem ; será que ele errou ou tem que passar sem ; mesmo. Tentou copiar o código igual do professor pra ver se roda?

Acho que sem ponto e virgula nem compila. Acho que o código correto deveria ser esse igual ao do professor.


DataModel model = new FileDataModel(new File(dados.csv));

UserSimilarity similarity = new PersonCorrelationSimilarity(model)

UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similaity, model);

UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);



List recommendations = recommender.recommend(2, 3);
for ( RecommendedItem recommendation : recommendations ){
    System.out.println(recommendation);
}

Meu código está eassim:

package br.com.alura;

import org.apache.mahout.cf.taste.common.TasteException; import org.apache.mahout.cf.taste.eval.RecommenderBuilder; import org.apache.mahout.cf.taste.impl.neighborhood.ThresholdUserNeighborhood; import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender; import org.apache.mahout.cf.taste.model.DataModel; import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood; import org.apache.mahout.cf.taste.recommender.Recommender; import org.apache.mahout.cf.taste.recommender.UserBasedRecommender; import org.apache.mahout.cf.taste.similarity.UserSimilarity; import org.apache.mahout.math.hadoop.similarity.cooccurrence.measures.PearsonCorrelationSimilarity;

public class RecomendadorBuilder implements RecommenderBuilder {

public Recommender buildRecommender(DataModel model) throws TasteException {
    UserSimilarity similarity = new PearsonCorrelationSimilarity(produtos);
    UserNeighborhood neighborhood = new ThresholdUserNeighborhood(0.1, similarity, model);
    UserBasedRecommender recommender = new GenericUserBasedRecommender(model, neighborhood, similarity);
    return null;

}

}

No vídeo, o código não é esse????

Estou sem ideias, preciso estudar mais sobre esse assunto. Algum instrutor poderia nos ajudar a chegar nessa solução?

Pois é, não sei se pulei alguma parte, mas pelo que vi, está igual (aparentemente), continuei o curso para não ficar esse tempo todo parado nele, estou fazendo emas na hora de rodar, infelizmente tenho que observar apenas a compilação da vídeo aula.

solução!

A importação do Simuarity está errada. Você está importando esse abaixo:

import org.apache.mahout.math.hadoop.similarity.cooccurrence.measures.PearsonCorrelationSimilarity;

O Correto a ser importado é:

import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;

Foi exatamente isso Haelio, muito obrigado.