@if(session('success')) @endif @if(session('error')) @endif
Prediksi Kelulusan
Fuzzy K-NN Algorithm
Metode Input
@csrf
Data Siswa
Data Akademik
@for ($i = 1; $i <= 6; $i++) @endfor
Semester Nilai Rata-rata
Semester {{ $i }}
Nilai USP
Data Non-Akademik
Parameter
Jumlah tetangga terdekat
@if(isset($manualPrediction) && isset($studentValues)) @php // Ambil nilai rata-rata akademik (semester_1 sampai semester_6) $akademik = collect(range(1,6))->map(function($i) use ($studentValues) { return isset($studentValues['semester_'.$i]) ? floatval($studentValues['semester_'.$i]) : null; })->filter()->avg(); // Ambil nilai non-akademik (kerapian, kerajinan, sikap) dan konversi ke 0, 0.5, 1 $nonAkademikMap = ['kurang baik' => 0, 'cukup baik' => 0.5, 'baik' => 1]; $kerapian = isset($studentValues['kerapian']) ? $nonAkademikMap[strtolower($studentValues['kerapian'])] ?? null : null; $kerajinan = isset($studentValues['kerajinan']) ? $nonAkademikMap[strtolower($studentValues['kerajinan'])] ?? null : null; $sikap = isset($studentValues['sikap']) ? $nonAkademikMap[strtolower($studentValues['sikap'])] ?? null : null; $nonAkademik = collect([$kerapian, $kerajinan, $sikap])->filter(function($v){return $v!==null;})->avg(); @endphp
Hasil Prediksi (Manual)
NISN
{{ $manualPrediction['nisn'] }}
Nama
{{ $manualPrediction['name'] }}
Status Prediksi
{{ ucwords($manualPrediction['status']) }}
@php $predictedClass = $manualPrediction['status'] ?? null; $ratio = isset($manualPrediction['ratios']) ? collect($manualPrediction['ratios'])->firstWhere('class', $predictedClass) : null; @endphp @if($ratio)
Derajat Keanggotaan Fuzzy
μ = {{ number_format($ratio->weight_ratio, 3) }}
@endif
@if(isset($manualPrediction['neighbors']) && count($manualPrediction['neighbors']) > 0)
Data Tetangga Terdekat:
@foreach($manualPrediction['neighbors'] as $neighbor) @endforeach
NISN Nama Status Jarak Bobot
{{ $neighbor['nisn'] }} {{ $neighbor['nama'] }} {{ ucwords($neighbor['true_status']) }} {{ number_format($neighbor['distance'], 4) }} {{ number_format($neighbor['weight'], 4) }}
@endif @if(isset($manualPrediction['ratios']) && count($manualPrediction['ratios']) > 0)
Kurva Derajat Keanggotaan Fuzzy
@endif
@endif
@csrf
Upload File Excel
Format file: .xls, .xlsx, atau .csv
Panduan Import Excel:
  1. Unduh template Excel menggunakan tombol "Template"
  2. Isi data siswa sesuai format (nama, NISN, nilai semester 1-6, USP, sikap, kerapian, kerajinan)
  3. Simpan file Excel Anda
  4. Unggah kembali menggunakan form di atas
Parameter
Jumlah tetangga terdekat
@if(isset($excelPredictions) && count($excelPredictions) > 0)
Hasil Prediksi Siswa (Batch Excel)
Total: {{ count($excelPredictions) }}
@foreach($excelPredictions as $pred)
NISN: {{ $pred['nisn'] }}
Nama: {{ $pred['name'] }}
Status: {{ ucwords($pred['status']) }}
@php $predictedClass = $pred['status'] ?? null; $ratio = isset($pred['ratios']) ? collect($pred['ratios'])->firstWhere('class', $predictedClass) : null; @endphp @if($ratio)
Derajat Keanggotaan
μ = {{ number_format($ratio->weight_ratio, 3) }}
@endif
@if(isset($pred['neighbors']) && count($pred['neighbors']) > 0)
Data Tetangga Terdekat:
@foreach($pred['neighbors'] as $neighbor) @endforeach
NISN Nama Status Jarak Bobot
{{ $neighbor['nisn'] }} {{ $neighbor['nama'] }} {{ ucwords($neighbor['true_status']) }} {{ number_format($neighbor['distance'], 4) }} {{ number_format($neighbor['weight'], 4) }}
@endif
@endforeach
@endif