PNN

You might also like

You are on page 1of 1

from __future__ import print_function, division

import numpy as np
import csv,math

def fungsiF_new(test_row, train_all, spread):


countKelas = {1:0, 2:0,3:0}
sum_pattern_kelas = {1:0, 2:0, 3:0}
outputlayer = {1:0, 2:0, 3:0}
kolom_kelas = len(test_row) - 1 # ambil index kolom terakhir sebagai kolom
kelas
for train_row in train_all:
sum_pattern = 0
for i in range(len(test_row)-1):
sum_pattern += (test_row[i]-train_row[i])**2
sum_pattern_kelas[train_row[kolom_kelas]] += np.exp(-1 * (sum_pattern / 2
*(spread**2)))
countKelas[train_row[kolom_kelas]] += 1
for i,x in sum_pattern_kelas.items():
outputlayer[i] = x / ( ((2*math.pi)**((len(test_row)-1)/2)) *
(spread**(len(test_row)-1)) * countKelas[i] )
return outputlayer

def classify_new(kelas_produksi):
#kelas_sorted = np.array(kelas_produksi)
# kelas_sorted = np.argsort(kelas_sorted, axis=0)
return max(kelas_produksi, key=kelas_produksi.get)

train = np.genfromtxt('train.prn')#load data train from txt file


test = np.genfromtxt('testing.prn')#load data test from txt file
spread = 0.1

hasil = []
for test_row in test:
outputlayer = fungsiF_new(test_row,train,spread)
hasil.append(classify_new(outputlayer))

benar = 0
with open('hasil_uji.csv', mode='w+') as file_hasil:
hasil_writer = csv.writer(file_hasil, delimiter=';', quotechar='"',
quoting=csv.QUOTE_MINIMAL, lineterminator='\n')
hasil_writer.writerow(["ID", "Kabupaten", "Param Garam", "Luas
Lahan","Produksi","Ket.Produksi"])
for i in range(len(hasil)):
hasil_writer.writerow(test[i].tolist() + [hasil[i]])
if hasil[i] == test[i][2]:
benar += 1

hasilpercobaan = (benar / len(hasil)) * 100


print("Akurasi: ",hasilpercobaan,"%")

You might also like