Advertisement
miftahunajat

Meong Meong

Oct 18th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.59 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.IOException;
  4. import java.nio.file.Files;
  5. import java.nio.file.Paths;
  6. import java.util.ArrayList;
  7. import java.util.Arrays;
  8. import java.util.Collections;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. import java.util.Scanner;
  13. import java.util.stream.Collectors;
  14.  
  15. public class Main {
  16.  
  17.     public static void main(String[] args) throws IOException {
  18.         Scanner sc = new Scanner(System.in);
  19.  
  20.         String file[] = Files.lines(Paths.get("data.txt")).toArray(size -> new String[size]); //Merubah data menjadi array string per baris nya ["cuaca temperatur kecepatan_angin olahraga"]
  21.         List<String[]> dataTraining = Arrays.stream(file) // Convert array string file menjadi stream
  22.                 .skip(1) // Mengskip data pertama karena bukan training
  23.                 .map(s -> s.split(" "))  // Di split berdasarkan spasi untuk tiap - tiap barisnya ["cerah","normal","pelan","ya"]
  24.                 .collect(Collectors.toList()); // Masukkan semua hasil pemecahan split ke dalam list array
  25.  
  26.         String feature[] = Arrays.stream(file)
  27.                 .map(s -> s.split(" ")) // Merubah satu baris string menjadi array ["cuaca temperatur kecepatan_angin olahraga"] -> ["cuaca", "temperatur", "kecepatan_angin", "olahraga"]
  28.                 .findFirst() // Mendapatkan elemen pertama yaitu fiturnya
  29.                 .get();
  30.         List<String> dataTest = new ArrayList<>();
  31.         Arrays.stream(feature).limit(feature.length - 1).forEach(s -> {
  32.             System.out.print("Masukkan " + s + " : ");
  33.             dataTest.add(sc.nextLine());
  34.         });
  35.         List<String> listOpsiJawaban = dataTraining.stream()
  36.                 .map(strings -> strings[strings.length - 1])
  37.                 .distinct()
  38.                 .collect(Collectors.toList());
  39.         Map<String,Float> hasilAkhir = new HashMap<>(); //Tempat menampung hasil akhir ke dalam hashmap dengan peluang sebagai value nya ex : {"ya" -> 0.4, "tidak" -> 0.6}
  40.         listOpsiJawaban.forEach(opsi -> {
  41.             float penyebut = 1;
  42.             float result = 1;
  43.             for (int j = 0; j < dataTest.size(); j++) {
  44.                 String test = dataTest.get(j);
  45.                 int finalJ = j;
  46.                 float pembilang = dataTraining.stream()
  47.                         .filter(strings -> strings[finalJ].equals(test)
  48.                                 && strings[strings.length - 1].equals(opsi))
  49.                         .count(); //Mencari jumlah kata dari test tersebut yang ada di data training
  50.                 penyebut = dataTraining.stream()
  51.                         .filter(strings -> strings[strings.length - 1].equals(opsi))
  52.                         .count(); //MEnghitung jumlah OPsi dari data training
  53.                 result *= test.equals("") ? 1 : pembilang / penyebut;
  54.             }
  55.             hasilAkhir.put(opsi,result * penyebut / dataTraining.size());
  56.             System.out.println("Total Peluang untuk " + opsi +  " : " + hasilAkhir.get(opsi));
  57.         });
  58.  
  59.         float max = Collections.max(hasilAkhir.values()); //Mencari di Hashmap nilai yang mempunyai value paling tinggi
  60.         String keputusan = hasilAkhir.entrySet().stream()
  61.                 .filter(entry -> entry.getValue() == max)
  62.                 .map(entry -> entry.getKey())
  63.                 .findFirst().get();
  64.         int featureLength = file[0].split(" ").length;
  65.         String asked = file[0].split(" ")[featureLength - 1];
  66.         System.out.println("Maka keputusan yang diambil untuk untuk " + asked +
  67.                 "Adalah [" + keputusan + "] dengan peluang " + max);
  68.     }
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement