Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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.