Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package projetoIA;
- import java.lang.Math;
- import java.util.Random;
- public class ProjetoRNA
- {
- static double[][] Data= new double[][]
- {
- //[ DURAÇÃO MESES,
- // DURAÇÃO HORAS,
- // QUANTIDADE DE MATERIAS,
- // NÍVEL DE ENTRADA,
- // TIPO DO CURSO ]
- // 0 TÉCNICO
- // 1 TECNOLOGO
- //SETOSAS
- new double[]{5.1,3.5,1.4,0.2,0},
- new double[]{4.9,3.0,1.4,0.2,0},
- new double[]{4.7,3.2,1.3,0.2,0},
- new double[]{4.6,3.1,1.5,0.2,0},
- new double[]{5.0,3.6,1.4,0.2,0},
- new double[]{5.4,3.9,1.7,0.4,0},
- new double[]{4.6,3.4,1.4,0.3,0},
- new double[]{5.0,3.4,1.5,0.2,0},
- new double[]{4.4,2.9,1.4,0.2,0},
- new double[]{4.9,3.1,1.5,0.1,0},
- new double[]{5.4,3.7,1.5,0.2,0},
- new double[]{4.8,3.4,1.6,0.2,0},
- new double[]{4.8,3.0,1.4,0.1,0},
- new double[]{4.3,3.0,1.1,0.1,0},
- new double[]{5.8,4.0,1.2,0.2,0},
- new double[]{5.7,4.4,1.5,0.4,0},
- new double[]{5.4,3.9,1.3,0.4,0},
- new double[]{5.1,3.5,1.4,0.3,0},
- new double[]{5.7,3.8,1.7,0.3,0},
- new double[]{5.1,3.8,1.5,0.3,0},
- new double[]{5.4,3.4,1.7,0.2,0},
- new double[]{5.1,3.7,1.5,0.4,0},
- new double[]{4.6,3.6,1.0,0.2,0},
- new double[]{5.1,3.3,1.7,0.5,0},
- new double[]{4.8,3.4,1.9,0.2,0},
- new double[]{5.0,3.0,1.6,0.2,0},
- new double[]{5.0,3.4,1.6,0.4,0},
- new double[]{5.2,3.5,1.5,0.2,0},
- new double[]{5.2,3.4,1.4,0.2,0},
- new double[]{4.7,3.2,1.6,0.2,0},
- new double[]{4.8,3.1,1.6,0.2,0},
- new double[]{5.4,3.4,1.5,0.4,0},
- new double[]{5.2,4.1,1.5,0.1,0},
- new double[]{5.5,4.2,1.4,0.2,0},
- new double[]{4.9,3.1,1.5,0.1,0},
- new double[]{5.0,3.2,1.2,0.2,0},
- new double[]{5.5,3.5,1.3,0.2,0},
- new double[]{4.9,3.1,1.5,0.1,0},
- new double[]{4.4,3.0,1.3,0.2,0},
- new double[]{5.1,3.4,1.5,0.2,0},
- new double[]{5.0,3.5,1.3,0.3,0},
- new double[]{4.5,2.3,1.3,0.3,0},
- new double[]{4.4,3.2,1.3,0.2,0},
- new double[]{5.0,3.5,1.6,0.6,0},
- new double[]{5.1,3.8,1.9,0.4,0},
- new double[]{4.8,3.0,1.4,0.3,0},
- new double[]{5.1,3.8,1.6,0.2,0},
- //VIRGÍNICAS
- new double[]{6.3,3.3,6.0,2.5,1},
- new double[]{5.8,2.7,5.1,1.9,1},
- new double[]{7.1,3.0,5.9,2.1,1},
- new double[]{6.3,2.9,5.6,1.8,1},
- new double[]{6.5,3.0,5.8,2.2,1},
- new double[]{7.6,3.0,6.6,2.1,1},
- new double[]{4.9,2.5,4.5,1.7,1},
- new double[]{7.3,2.9,6.3,1.8,1},
- new double[]{6.7,2.5,5.8,1.8,1},
- new double[]{7.2,3.6,6.1,2.5,1},
- new double[]{6.5,3.2,5.1,2.0,1},
- new double[]{6.4,2.7,5.3,1.9,1},
- new double[]{6.8,3.0,5.5,2.1,1},
- new double[]{5.7,2.5,5.0,2.0,1},
- new double[]{5.8,2.8,5.1,2.4,1},
- new double[]{6.4,3.2,5.3,2.3,1},
- new double[]{6.5,3.0,5.5,1.8,1},
- new double[]{7.7,3.8,6.7,2.2,1},
- new double[]{7.7,2.6,6.9,2.3,1},
- new double[]{6.0,2.2,5.0,1.5,1},
- new double[]{6.9,3.2,5.7,2.3,1},
- new double[]{5.6,2.8,4.9,2.0,1},
- new double[]{7.7,2.8,6.7,2.0,1},
- new double[]{6.3,2.7,4.9,1.8,1},
- new double[]{6.7,3.3,5.7,2.1,1},
- new double[]{7.2,3.2,6.0,1.8,1},
- new double[]{6.2,2.8,4.8,1.8,1},
- new double[]{6.1,3.0,4.9,1.8,1},
- new double[]{6.4,2.8,5.6,2.1,1},
- new double[]{7.2,3.0,5.8,1.6,1},
- new double[]{7.4,2.8,6.1,1.9,1},
- new double[]{7.9,3.8,6.4,2.0,1},
- new double[]{6.4,2.8,5.6,2.2,1},
- new double[]{6.3,2.8,5.1,1.5,1},
- new double[]{6.1,2.6,5.6,1.4,1},
- new double[]{7.7,3.0,6.1,2.3,1},
- new double[]{6.3,3.4,5.6,2.4,1},
- new double[]{6.4,3.1,5.5,1.8,1},
- new double[]{6.0,3.0,4.8,1.8,1},
- new double[]{6.9,3.1,5.4,2.1,1},
- new double[]{6.7,3.1,5.6,2.4,1},
- new double[]{6.9,3.1,5.1,2.3,1},
- new double[]{5.8,2.7,5.1,1.9,1},
- new double[]{6.8,3.2,5.9,2.3,1},
- new double[]{6.7,3.3,5.7,2.5,1},
- new double[]{6.7,3.0,5.2,2.3,1},
- new double[]{6.3,2.5,5.0,1.9,1}
- // TOTAL DE 46 VIRGÍNICA
- // TOTAL DE 46 SETOSA
- };
- static Random random = new Random();
- static double Peso1;
- static double Peso2;
- static double Peso3; // MAIS DUAS
- static double Peso4; // CARACTERÍSTICAS
- static double B;
- static double Previsão;
- static double Alvo;
- static double FunçãoERRO;
- static double TaxaAprendizado= 0.1;
- //DERIVADAS
- static double Derivada_Previsão;
- static double Derivada_FunçãoERRO;
- //DERIVADAS
- static double[] Ponto;
- public static void main(String[] args)
- {
- Iniciar();
- }
- static void Iniciar()
- {
- Peso1 = random.nextDouble();
- Peso2 = random.nextDouble();
- Peso3 = random.nextDouble(); // !
- Peso4 = random.nextDouble(); // !
- B = random.nextDouble();
- Treinamento();
- Previsão_FlorDesconhecida();
- }
- public static void Treinamento()
- {
- for(int i=0; i<=10000; i++)
- {
- Ponto = Data[random.nextInt(Data.length)];
- Alvo = Ponto[4]; //NOSSO ALVO AVANÇA DUAS CASAS >>
- // PONTO[comprimento1, largura1, comprimento2, largura2, *ALVO*]
- Previsão = Sigmoid(Ponto[0] * Peso1 + Ponto[1] * Peso2 +
- Ponto[2] * Peso3 + Ponto[3] * Peso4 + B);
- FunçãoERRO = (Previsão - Alvo);
- // VAMOS DERIVAR!
- Derivada_FunçãoERRO = 2 * (FunçãoERRO);
- Derivada_Previsão = Derivada_FunçãoERRO * Derivada_Sigmoid(Previsão);
- Peso1 = Peso1 - TaxaAprendizado * (Derivada_Previsão * Ponto[0]);
- Peso2 = Peso2 - TaxaAprendizado * (Derivada_Previsão * Ponto[1]);
- Peso3 = Peso3 - TaxaAprendizado * (Derivada_Previsão * Ponto[2]);
- Peso4 = Peso4 - TaxaAprendizado * (Derivada_Previsão * Ponto[3]);
- B = B - TaxaAprendizado * (Derivada_Previsão * B);
- //VAMOS DERIVAR!
- }
- }
- static void Previsão_FlorDesconhecida()
- {
- //[ COMPRIMENTO DA SÉPALA,
- // LARGURA DA SÉPALA,
- // COMPRIMENTO DAS PÉTALAS,
- // LARGURA DAS PÉTALAS,
- // NOME DA FLOR ]
- //FLORES DESCONHECIDAS
- // 4.5, 3.5, 1.4, 0.4 # setosa],
- // 4.9, 3.4, 1.2, 0.1 # setosa],
- // 5.3, 3.2, 1.8, 0.7 # setosa],
- // 6.5, 3.0, 5.2, 2.0 Iris-virginica
- // 6.2, 3.4, 5.4, 2.3 Iris-virginica
- // 5.9, 3.0, 5.1, 1.8 Iris-virginica
- //FLORES DESCONHECIDAS
- Previsão = Sigmoid(6.8 * Peso1 + 2.7 * Peso2 + 5.0 * Peso3 + 1.7 * Peso4 + B);
- System.out.print(Previsão);
- if(Previsão > 0.5f) //1
- {
- System.out.print(" : Virgínica");
- }
- else
- {
- System.out.print(" : Setosa"); //0
- }
- }
- //FUNÇÃO DE ATIVAÇÃO
- public static double Sigmoid(double X)
- {
- return 1/(1+Math.exp(-X));
- }
- public static double Derivada_Sigmoid(double X)
- {
- return Sigmoid(X) * (1 - Sigmoid(X));
- }
- //FUNÇÃO DE ATIVAÇÃO
- }
- //
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement