private Arquivo AvaliarWekaClassificacao(Arquivo _arquivoAvaliado) { // Importa o Classificador que foi salvo pelo treinamento FilteredClassifier classifier = (FilteredClassifier)ImportaClassificadorSalvo(); // Importa os Dados de Treinamento salvo pelo treinamento Instances dadosTreinamento = ImportaDadosTreinamentoSalvo(); dadosTreinamento.setClassIndex(dadosTreinamento.numAttributes() - 1); // Classe fica em último int numAttributes = dadosTreinamento.numAttributes(); // Cria a instância de teste Instance instance = new DenseInstance(numAttributes); instance.setDataset(dadosTreinamento); // Inicializa todos os atributos como valor zero. for (int i = 0; i < numAttributes; i++) { instance.setValue(i, 0); } // Insere o texto a ser avaliado no primeiro atributo for (int i = 0; i < numAttributes - 1; i++) { instance.setValue(i, _arquivoAvaliado.TextoFormatado); } // Indica que a Classe está faltando, para que a mesma possa ser classificada instance.setClassMissing(); // Classifica a instância de teste var resultado = ""; try { // Realiza a classificação da instância, retornando o resultado previsto var predicao = classifier.classifyInstance(instance); instance.setClassValue(predicao); // Realiza a tradução do resultado numérico na Classificação esperada resultado = dadosTreinamento.classAttribute().value((int)predicao); var distribuicao = classifier.distributionForInstance(instance); } catch (Exception) { throw (new ClassificationException("O texto não pode ser classificado quanto à sua qualidade.")); } // Atribui o resultado ao arquivo avaliado _arquivoAvaliado.Classificacao = resultado; return(_arquivoAvaliado); }
/// <summary> /// 预测薪资 /// </summary> /// <param name="jobScore">职位得分</param> /// <param name="schoolScore">学校得分</param> /// <param name="degreeScore">学历得分</param> /// <param name="addrScore">地区得分</param> /// <param name="year">工作年限</param> /// <returns>预估薪资</returns> public double predicate(double jobScore, double schoolScore, double degreeScore, double addrScore, double year) { Instance inst = new DenseInstance(header.numAttributes()); inst.setDataset(header); // 职位得分 inst.setValue(0, jobScore); // 学校得分 inst.setValue(1, schoolScore); // 学历得分 inst.setValue(2, degreeScore); // 地区得分 inst.setValue(3, addrScore); // 工作年限 inst.setValue(4, year); // 薪资(待预测) inst.setValue(5, 0); return cl.classifyInstance(inst); }
public void Train(string text, IList<int> tags) { Instance ins = new DenseInstance(tagsNb+1); ins.setDataset(dataSet); ins.setValue(0, text); for (int i = 0; i < tagsNb; i++) { if (tags.Contains(i)) { ins.setValue(i + 1, 1); } else { ins.setValue(i + 1, 0); } } dataSet.add(ins); }
public IEnumerable<double> Tag(string text) { Instance ins = new DenseInstance(tagsNb+1); ins.setDataset(dataSet); ins.setValue(0, text); MultiLabelOutput mlo = cl.makePrediction(ins); List<double> outp = new List<Double>(); foreach (bool b in mlo.getBipartition()) { if (b) { outp.Add(1); } else { outp.Add(0); } } return outp; }
public IEnumerable<double> Tag(string text) { Instance instance = new DenseInstance (1.0d, new ConcreteBasicTextVector (text, false).ToVector (1)); double[] val = new double[this.not]; for (int i = 0; i < this.not; i++) { instance.setDataset (datasets [i]); val [i] = classifiers [i].classifyInstance (instance); } return val; }
public IEnumerable<double> Tag(string text) { Instance ins = new DenseInstance(tagsNb + 1); ins.setDataset(oDataSet); ins.setValue(0, text); stv.input(ins); ins = stv.output(); MultiLabelOutput mlo = lps.makePrediction(ins); List<double> outp = new List<Double>(); int i = 0; foreach (bool b in mlo.getBipartition()) { if (b) { outp.Add(mlo.getConfidences()[i++]/2 + 0.5); } else { outp.Add(0.5 - mlo.getConfidences()[i++]/2); } } return outp; }