Advertisement
PabloMartinezfr10

Untitled

Jun 9th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.99 KB | None | 0 0
  1. package projetoIA;
  2.  
  3. import java.lang.Math;
  4. import java.util.Random;
  5.  
  6. public class ProjetoRNA
  7. {  
  8.     static double[][] Data= new double[][]
  9.     {
  10.                        
  11. //[ DURAÇÃO MESES,
  12. //  DURAÇÃO HORAS,
  13. //  QUANTIDADE DE MATERIAS,
  14. //  NÍVEL DE ENTRADA,
  15. //  TIPO DO CURSO ]  
  16.        
  17.         // 0 TÉCNICO
  18.         // 1 TECNOLOGO
  19.        
  20.        
  21.                     //SETOSAS
  22.     new double[]{5.1,3.5,1.4,0.2,0},
  23.     new double[]{4.9,3.0,1.4,0.2,0},
  24.     new double[]{4.7,3.2,1.3,0.2,0},
  25.     new double[]{4.6,3.1,1.5,0.2,0},
  26.     new double[]{5.0,3.6,1.4,0.2,0},
  27.     new double[]{5.4,3.9,1.7,0.4,0},
  28.     new double[]{4.6,3.4,1.4,0.3,0},
  29.     new double[]{5.0,3.4,1.5,0.2,0},
  30.     new double[]{4.4,2.9,1.4,0.2,0},
  31.     new double[]{4.9,3.1,1.5,0.1,0},
  32.     new double[]{5.4,3.7,1.5,0.2,0},
  33.     new double[]{4.8,3.4,1.6,0.2,0},
  34.     new double[]{4.8,3.0,1.4,0.1,0},
  35.     new double[]{4.3,3.0,1.1,0.1,0},
  36.     new double[]{5.8,4.0,1.2,0.2,0},
  37.     new double[]{5.7,4.4,1.5,0.4,0},
  38.     new double[]{5.4,3.9,1.3,0.4,0},
  39.     new double[]{5.1,3.5,1.4,0.3,0},
  40.     new double[]{5.7,3.8,1.7,0.3,0},
  41.     new double[]{5.1,3.8,1.5,0.3,0},
  42.     new double[]{5.4,3.4,1.7,0.2,0},
  43.     new double[]{5.1,3.7,1.5,0.4,0},
  44.     new double[]{4.6,3.6,1.0,0.2,0},
  45.     new double[]{5.1,3.3,1.7,0.5,0},
  46.     new double[]{4.8,3.4,1.9,0.2,0},
  47.     new double[]{5.0,3.0,1.6,0.2,0},
  48.     new double[]{5.0,3.4,1.6,0.4,0},
  49.     new double[]{5.2,3.5,1.5,0.2,0},
  50.     new double[]{5.2,3.4,1.4,0.2,0},
  51.     new double[]{4.7,3.2,1.6,0.2,0},
  52.     new double[]{4.8,3.1,1.6,0.2,0},
  53.     new double[]{5.4,3.4,1.5,0.4,0},
  54.     new double[]{5.2,4.1,1.5,0.1,0},
  55.     new double[]{5.5,4.2,1.4,0.2,0},
  56.     new double[]{4.9,3.1,1.5,0.1,0},
  57.     new double[]{5.0,3.2,1.2,0.2,0},
  58.     new double[]{5.5,3.5,1.3,0.2,0},
  59.     new double[]{4.9,3.1,1.5,0.1,0},
  60.     new double[]{4.4,3.0,1.3,0.2,0},
  61.     new double[]{5.1,3.4,1.5,0.2,0},
  62.     new double[]{5.0,3.5,1.3,0.3,0},
  63.     new double[]{4.5,2.3,1.3,0.3,0},
  64.     new double[]{4.4,3.2,1.3,0.2,0},
  65.     new double[]{5.0,3.5,1.6,0.6,0},
  66.     new double[]{5.1,3.8,1.9,0.4,0},
  67.     new double[]{4.8,3.0,1.4,0.3,0},
  68.     new double[]{5.1,3.8,1.6,0.2,0},
  69.    
  70.                 //VIRGÍNICAS
  71.     new double[]{6.3,3.3,6.0,2.5,1},
  72.     new double[]{5.8,2.7,5.1,1.9,1},
  73.     new double[]{7.1,3.0,5.9,2.1,1},
  74.     new double[]{6.3,2.9,5.6,1.8,1},
  75.     new double[]{6.5,3.0,5.8,2.2,1},
  76.     new double[]{7.6,3.0,6.6,2.1,1},
  77.     new double[]{4.9,2.5,4.5,1.7,1},
  78.     new double[]{7.3,2.9,6.3,1.8,1},
  79.     new double[]{6.7,2.5,5.8,1.8,1},
  80.     new double[]{7.2,3.6,6.1,2.5,1},
  81.     new double[]{6.5,3.2,5.1,2.0,1},    
  82.     new double[]{6.4,2.7,5.3,1.9,1},
  83.     new double[]{6.8,3.0,5.5,2.1,1},
  84.     new double[]{5.7,2.5,5.0,2.0,1},
  85.     new double[]{5.8,2.8,5.1,2.4,1},
  86.     new double[]{6.4,3.2,5.3,2.3,1},
  87.     new double[]{6.5,3.0,5.5,1.8,1},
  88.     new double[]{7.7,3.8,6.7,2.2,1},
  89.     new double[]{7.7,2.6,6.9,2.3,1},
  90.     new double[]{6.0,2.2,5.0,1.5,1},    
  91.     new double[]{6.9,3.2,5.7,2.3,1},
  92.     new double[]{5.6,2.8,4.9,2.0,1},
  93.     new double[]{7.7,2.8,6.7,2.0,1},
  94.     new double[]{6.3,2.7,4.9,1.8,1},
  95.     new double[]{6.7,3.3,5.7,2.1,1},
  96.     new double[]{7.2,3.2,6.0,1.8,1},
  97.     new double[]{6.2,2.8,4.8,1.8,1},
  98.     new double[]{6.1,3.0,4.9,1.8,1},
  99.     new double[]{6.4,2.8,5.6,2.1,1},    
  100.     new double[]{7.2,3.0,5.8,1.6,1},
  101.     new double[]{7.4,2.8,6.1,1.9,1},
  102.     new double[]{7.9,3.8,6.4,2.0,1},
  103.     new double[]{6.4,2.8,5.6,2.2,1},
  104.     new double[]{6.3,2.8,5.1,1.5,1},
  105.     new double[]{6.1,2.6,5.6,1.4,1},
  106.     new double[]{7.7,3.0,6.1,2.3,1},
  107.     new double[]{6.3,3.4,5.6,2.4,1},
  108.     new double[]{6.4,3.1,5.5,1.8,1},    
  109.     new double[]{6.0,3.0,4.8,1.8,1},
  110.     new double[]{6.9,3.1,5.4,2.1,1},
  111.     new double[]{6.7,3.1,5.6,2.4,1},
  112.     new double[]{6.9,3.1,5.1,2.3,1},
  113.     new double[]{5.8,2.7,5.1,1.9,1},
  114.     new double[]{6.8,3.2,5.9,2.3,1},
  115.     new double[]{6.7,3.3,5.7,2.5,1},
  116.     new double[]{6.7,3.0,5.2,2.3,1},
  117.     new double[]{6.3,2.5,5.0,1.9,1}
  118.    
  119.    
  120.     // TOTAL DE 46 VIRGÍNICA
  121.     // TOTAL DE 46 SETOSA
  122.    
  123.     }; 
  124.            
  125.     static Random random = new Random();  
  126.     static double Peso1;
  127.     static double Peso2;
  128.    
  129.     static double Peso3;   //   MAIS DUAS
  130.     static double Peso4;   //  CARACTERÍSTICAS
  131.    
  132.     static double B;
  133.    
  134.     static double Previsão;
  135.     static double Alvo;
  136.     static double FunçãoERRO;
  137.     static double TaxaAprendizado= 0.1;
  138.        
  139.     //DERIVADAS
  140.     static double Derivada_Previsão;
  141.     static double Derivada_FunçãoERRO;
  142.     //DERIVADAS
  143.    
  144.     static double[] Ponto;
  145.  
  146.        
  147.     public static void main(String[] args)
  148.     {                  
  149.         Iniciar();
  150.     }
  151.        
  152.     static void Iniciar()
  153.     {
  154.         Peso1 = random.nextDouble();
  155.         Peso2 = random.nextDouble();
  156.        
  157.         Peso3 = random.nextDouble();   // !
  158.         Peso4 = random.nextDouble();   // !
  159.        
  160.         B = random.nextDouble();
  161.        
  162.         Treinamento();
  163.         Previsão_FlorDesconhecida();
  164.     }
  165.    
  166.    
  167.    
  168.    
  169.    
  170.    
  171.    
  172.    
  173.    
  174.    
  175.     public static void Treinamento()
  176.     {
  177.         for(int i=0; i<=10000; i++)
  178.         {                      
  179.             Ponto = Data[random.nextInt(Data.length)];     
  180.                            
  181.             Alvo = Ponto[4];   //NOSSO ALVO AVANÇA DUAS CASAS >>
  182.            
  183.             // PONTO[comprimento1, largura1, comprimento2, largura2, *ALVO*]
  184.                                                                
  185.             Previsão = Sigmoid(Ponto[0] * Peso1 + Ponto[1] * Peso2 +
  186.                                Ponto[2] * Peso3 + Ponto[3] * Peso4 + B);  
  187.            
  188.            
  189.            
  190.  
  191.  
  192.            
  193.            
  194.            
  195.            
  196.            
  197.             FunçãoERRO = (Previsão - Alvo);  
  198.                        
  199.            
  200.             // VAMOS DERIVAR!      
  201.             Derivada_FunçãoERRO = 2 * (FunçãoERRO);
  202.             Derivada_Previsão = Derivada_FunçãoERRO * Derivada_Sigmoid(Previsão);  
  203.            
  204.             Peso1 = Peso1 - TaxaAprendizado * (Derivada_Previsão * Ponto[0]);         
  205.             Peso2 = Peso2 - TaxaAprendizado * (Derivada_Previsão * Ponto[1]);
  206.             Peso3 = Peso3 - TaxaAprendizado * (Derivada_Previsão * Ponto[2]);
  207.             Peso4 = Peso4 - TaxaAprendizado * (Derivada_Previsão * Ponto[3]);
  208.             B = B - TaxaAprendizado * (Derivada_Previsão * B);
  209.             //VAMOS DERIVAR!
  210.            
  211.         }
  212.     }
  213.    
  214.  
  215.    
  216.    
  217.    
  218.     static void Previsão_FlorDesconhecida()
  219.     {                  
  220.        
  221.  //[ COMPRIMENTO DA SÉPALA,
  222.     //  LARGURA DA SÉPALA,
  223.     //  COMPRIMENTO DAS PÉTALAS,
  224.     //  LARGURA DAS PÉTALAS,
  225.     //  NOME DA FLOR ]  
  226.        
  227.                     //FLORES DESCONHECIDAS
  228.      //   4.5, 3.5, 1.4, 0.4                #  setosa],
  229.      //   4.9, 3.4, 1.2, 0.1                #  setosa],
  230.      //   5.3, 3.2, 1.8, 0.7                #  setosa],
  231.  
  232.     //    6.5, 3.0, 5.2, 2.0                Iris-virginica
  233.     //    6.2, 3.4, 5.4, 2.3                Iris-virginica
  234.     //    5.9, 3.0, 5.1, 1.8                Iris-virginica
  235.                     //FLORES DESCONHECIDAS
  236.  
  237.                
  238.    Previsão = Sigmoid(6.8 * Peso1 + 2.7 * Peso2 + 5.0 * Peso3 + 1.7 * Peso4 + B);  
  239.    
  240.         System.out.print(Previsão);
  241.         if(Previsão > 0.5f)   //1
  242.         {
  243.             System.out.print(" : Virgínica");
  244.         }
  245.         else
  246.         {
  247.             System.out.print(" : Setosa");   //0
  248.         }
  249.     }
  250.    
  251.    
  252.    
  253.    
  254.    
  255.    
  256.    
  257.    
  258.    
  259.    
  260.    
  261.     //FUNÇÃO DE ATIVAÇÃO   
  262.     public static double Sigmoid(double X)
  263.     {      
  264.         return 1/(1+Math.exp(-X));
  265.     }  
  266.     public static double Derivada_Sigmoid(double X)
  267.     {
  268.         return Sigmoid(X) * (1 - Sigmoid(X));
  269.     }  
  270.     //FUNÇÃO DE ATIVAÇÃO
  271.  
  272. }
  273. //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement