Este artigo descreve o algoritmo ingênuo de Bayes implementado em Java. Compartilhe -o para sua referência, como segue:
Acredito que os jovens que fazem sistemas de mineração e recomendação de dados estão familiarizados com o algoritmo ingênuo de Bayes, por isso não vou falar sobre os princípios do algoritmo. Eu quero principalmente implementar o algoritmo ingênuo de Bayes através do código Java, e a ideia é:
1. Use Javabean +Arraylist para treinamento de armazenamento de dados
2. Para treinamento de dados de amostra
O código específico é o seguinte:
pacote nb;/** * Propriedades das amostras de treinamento javabean * */public class Javabean {int Age; Renda de cordas; Estudante de string; String credit_rating; String buys_computer; public javabean () {} public javabean (idade int, renda de string, estudante de string, string credit_rating, string buys_computer) {this.age = idade; this.income = renda; this.student = aluno; this.credit_rating = credit_rating; this.buys_computer = buys_computer;} public int getage () {return idade;} public void setage (int Age) {this.age = Age;} public string getincome () {rendimento de retorno;} public void setInCome (string rend) {this.income = rendy;} string público; this.student = student;} public string getCredit_rating () {return credit_rating;} public void setCredit_rating (string credit_rating) {this.credit_rating = credit_rating;} public stringbuys_computer () {return buys_computer; this.buys_computer = buys_computer;}@string string tostring () {returnA parte da implementação do algoritmo:
pacote nb; importar java.io.bufferedReader; importar java.io.file; importar java.io.fileReader; importar java.util.arraylist; public classe testnb { / ** data_length*pensamentos de algoritmo* / public static ArrayList <Javabean> list = listrayList = newlist de algoritmo* / public static> estático int data_length = 0; public static void main (string [] args) {// 1. Leia os dados e coloque -os no arquivo de contêiner da lista Arquivo = novo arquivo ("e: //test.txt"); txt2string (arquivo); // Data Test Sample TestData (25, "Médio", "Sim", "Fair"); } // Leia os dados de amostra public static void txt2String (arquivo de arquivo) {try {buffarredReader Br = new BufferredReader (new FileReader (file)); // Construa uma classe BufferSeader para ler a sequência do arquivo s = null; while ((s = Br.readline ())! = null) {// use o método ReadLine para ler uma linha por vez data_length ++; divisão (s); } Br.Close (); } catch (Exceção e) {e.printStackTrace (); }} // Salvar no ArrayList public static void splitt (string str) {string strr = str.trim (); String [] abc = strr.split ("[// P {Space}]+"); Int Age = Integer.parseint (ABC [0]); Javabean Bean = New Javabean (idade, ABC [1], ABC [2], ABC [3], ABC [4]); list.add (Bean); } // Amostra de treinamento, teste public static void testData (Int Age, String A, String B, String C) {// Amostra de Treinamento Int number_yes = 0; int bucket_no = 0; // o número de casos de idade int num_age_yes = 0; int num_age_no = 0; // renda int num_income_yes = 0; int num_income_no = 0; // estudante int num_student_yes = 0; int num_stdent_no = 0; // credit int num_credit_yes = 0; int num_credit_no = 0; // Lista de viagens para obter dados para (int i = 0; i <list.size (); i ++) {javabean bb = list.get (i); if (bb.getbuys_computer (). Equals ("sim")) {// sim number_yes ++; if (bb.getincome (). igual a (a)) {// renda num_income_yes ++; } if (bb.getStudent (). Equals (b)) {// Student num_student_yes ++; } if (bb.getCredit_rating (). Equals (c)) {// credit num_credit_yes ++; } if (bb.getage () == AGE) {// AGE NUM_AGE_YES ++; }} else {// no bumber_no ++; if (bb.getincome (). igual a (a)) {// renda num_income_no ++; } if (bb.getStudent (). Equals (b)) {// Student num_stdent_no ++; } if (bb.getCredit_rating (). Equals (c)) {// credit num_credit_no ++; } if (bb.getage () == AGE) {// AGE NUM_AGE_NO ++; }}} System.out.println ("O número de compras:"+número_yes); System.out.println ("O número de histórico não comprado:"+bumber_no); System.out.println ("Comprar+idade:"+num_age_yes); System.out.println ("Comprar+renda:"+num_age_no); System.out.println ("Comprar+renda:"+num_income_yes); System.out.println ("Comprar+renda:"+num_income_yes); System.out.println ("Buy+STUNDENT:"+num_student_yes); System.out.println ("Comprar+aluno:"+num_stdent_no); System.out.println ("Comprar+STUNDENT:"+num_stdent_no); System.out.println ("Buy+Credit:"+num_credit_yes); System.out.println ("Comprar+crédito:"+num_credit_no); //// julgamento de probabilidade duplo buy_yes = number_yes*1.0/data_length; // Probabilidade Compra dupla compra_no = bumber_no*1.0/data_length; // probabilidade de não comprar System.out.println ("Compre probabilidade nos dados de treinamento:"+compra_yes); System.out.println ("Compre probabilidade nos dados de treinamento:"+compra_no); /// Unknown user's double nb_buy_yes=(1.0*num_age_yes/number_yes)*(1.0*num_income_yes/number_yes)*(1.0*num_student_yes/number_yes)*(1.0*num_credit_yes/number_yes)*(1.0*num_credit_yes/number_yes)*buy_yes; duplo nb_buy_no = (1.0*num_age_no/bumber_no)*(1.0*num_income_no/bumber_no)*(1.0*num_stdent_no/bumber_no)*(1.0*num_credit_no/bumber_no)*buy_no; System.out.println ("Probabilidade dos novos usuários para comprar:"+nb_buy_yes); System.out.println ("Probabilidade dos novos usuários não comprarem:"+nb_buy_no); if (nb_buy_yes> nb_buy_no) {System.out.println ("Probabilidade dos novos usuários não comprarem"); } else {System.out.println ("Probabilidade dos novos usuários não comprarem"); }}}Para dados de amostra:
25 High, sem justo não
25 High, sem excelente não
33 High, sem justo sim
41 Média não é justo sim
41 baixo sim justo sim
41 baixo sim excelente não
33 baixo sim excelente sim
25 médio sem justo não
25 baixo sim justo sim
41 médio sim justo sim
25 médio sim excelente sim
33 Média sem excelente sim
33 alta sim justa sim
41 Médio sem excelente não
Resultados para dados desconhecidos do usuário:
Número de compras: 9
Nenhum histórico de não comprar: 5
Compra +idade: 2
Não compre +idade: 3
Compra +renda: 4
Não compre +renda: 2
Compra +estundente: 6
Não compre +aluno: 1
Comprar + crédito: 6
Não compre + crédito: 2
Probabilidade de comprar dados de treinamento: 0,6428571428571429
A probabilidade de não comprar nos dados de treinamento: 0,35714285714285715
A probabilidade de novos usuários comprando: 0,028218694885361547
A probabilidade de novos usuários não comprarem: 0,006857142857142858
Novos usuários têm uma alta probabilidade de comprar
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo das dicas de nó da operação Java Dom", "Resumo de dicas de operação de Java e Operação de Java" e "Resumo de Java cache" Tips "TIPS"
Espero que este artigo seja útil para a programação Java de todos.