Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.IOException;
- import java.nio.file.Files;
- import java.nio.file.Paths;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.Collections;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Scanner;
- import java.util.stream.Collectors;
- public class Main {
- public static void main(String[] args) throws IOException {
- Scanner sc = new Scanner(System.in);
- 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"]
- List<String[]> dataTraining = Arrays.stream(file) // Convert array string file menjadi stream
- .skip(1) // Mengskip data pertama karena bukan training
- .map(s -> s.split(" ")) // Di split berdasarkan spasi untuk tiap - tiap barisnya ["cerah","normal","pelan","ya"]
- .collect(Collectors.toList()); // Masukkan semua hasil pemecahan split ke dalam list array
- String feature[] = Arrays.stream(file)
- .map(s -> s.split(" ")) // Merubah satu baris string menjadi array ["cuaca temperatur kecepatan_angin olahraga"] -> ["cuaca", "temperatur", "kecepatan_angin", "olahraga"]
- .findFirst() // Mendapatkan elemen pertama yaitu fiturnya
- .get();
- List<String> dataTest = new ArrayList<>();
- Arrays.stream(feature).limit(feature.length - 1).forEach(s -> {
- System.out.print("Masukkan " + s + " : ");
- dataTest.add(sc.nextLine());
- });
- List<String> listOpsiJawaban = dataTraining.stream()
- .map(strings -> strings[strings.length - 1])
- .distinct()
- .collect(Collectors.toList());
- 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}
- listOpsiJawaban.forEach(opsi -> {
- float penyebut = 1;
- float result = 1;
- for (int j = 0; j < dataTest.size(); j++) {
- String test = dataTest.get(j);
- int finalJ = j;
- float pembilang = dataTraining.stream()
- .filter(strings -> strings[finalJ].equals(test)
- && strings[strings.length - 1].equals(opsi))
- .count(); //Mencari jumlah kata dari test tersebut yang ada di data training
- penyebut = dataTraining.stream()
- .filter(strings -> strings[strings.length - 1].equals(opsi))
- .count(); //MEnghitung jumlah OPsi dari data training
- result *= test.equals("") ? 1 : pembilang / penyebut;
- }
- hasilAkhir.put(opsi,result * penyebut / dataTraining.size());
- System.out.println("Total Peluang untuk " + opsi + " : " + hasilAkhir.get(opsi));
- });
- float max = Collections.max(hasilAkhir.values()); //Mencari di Hashmap nilai yang mempunyai value paling tinggi
- String keputusan = hasilAkhir.entrySet().stream()
- .filter(entry -> entry.getValue() == max)
- .map(entry -> entry.getKey())
- .findFirst().get();
- int featureLength = file[0].split(" ").length;
- String asked = file[0].split(" ")[featureLength - 1];
- System.out.println("Maka keputusan yang diambil untuk untuk " + asked +
- "Adalah [" + keputusan + "] dengan peluang " + max);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement