dl_slp_classification
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
from math import *
A = [5.1,4.9,4.7,4.6,5,5.4,4.6,5,4.4,4.9,5.4,4.8,4.8,4.3,5.8,5.7,5.4,5.1,5.7,5.1,5.4,5.1,4.6,5.1,4.8,5,5,5.2,5.2,4.7,4.8,5.4,5.2,5.5,4.9,5,5.5,4.9,4.4,5.1,5,4.5,4.4,5,5.1,4.8,5.1,4.6,5.3,5,7,6.4,6.9,5.5,6.5,5.7,6.3,4.9,6.6,5.2,5,5.9,6,6.1,5.6,6.7,5.6,5.8,6.2,5.6,5.9,6.1,6.3,6.1,6.4,6.6,6.8,6.7,6,5.7,5.5,5.5,5.8,6,5.4,6,6.7,6.3,5.6,5.5,5.5,6.1,5.8,5,5.6,5.7,5.7,6.2,5.1,5.7]
B = [3.5,3,3.2,3.1,3.6,3.9,3.4,3.4,2.9,3.1,3.7,3.4,3,3,4,4.4,3.9,3.5,3.8,3.8,3.4,3.7,3.6,3.3,3.4,3,3.4,3.5,3.4,3.2,3.1,3.4,4.1,4.2,3.1,3.2,3.5,3.6,3,3.4,3.5,2.3,3.2,3.5,3.8,3,3.8,3.2,3.7,3.3,3.2,3.2,3.1,2.3,2.8,2.8,3.3,2.4,2.9,2.7,2,3,2.2,2.9,2.9,3.1,3,2.7,2.2,2.5,3.2,2.8,2.5,2.8,2.9,3,2.8,3,2.9,2.6,2.4,2.4,2.7,2.7,3,3.4,3.1,2.3,3,2.5,2.6,3,2.6,2.3,2.7,3,2.9,2.9,2.5,2.8]
C = [1.4,1.4,1.3,1.5,1.4,1.7,1.4,1.5,1.4,1.5,1.5,1.6,1.4,1.1,1.2,1.5,1.3,1.4,1.7,1.5,1.7,1.5,1,1.7,1.9,1.6,1.6,1.5,1.4,1.6,1.6,1.5,1.5,1.4,1.5,1.2,1.3,1.4,1.3,1.5,1.3,1.3,1.3,1.6,1.9,1.4,1.6,1.4,1.5,1.4,4.7,4.5,4.9,4,4.6,4.5,4.7,3.3,4.6,3.9,3.5,4.2,4,4.7,3.6,4.4,4.5,4.1,4.5,3.9,4.8,4,4.9,4.7,4.3,4.4,4.8,5,4.5,3.5,3.8,3.7,3.9,5.1,4.5,4.5,4.7,4.4,4.1,4,4.4,4.6,4,3.3,4.2,4.2,4.2,4.3,3,4.1]
D = [0.2,0.2,0.2,0.2,0.2,0.4,0.3,0.2,0.2,0.1,0.2,0.2,0.1,0.1,0.2,0.4,0.4,0.3,0.3,0.3,0.2,0.4,0.2,0.5,0.2,0.2,0.4,0.2,0.2,0.2,0.2,0.4,0.1,0.2,0.2,0.2,0.2,0.1,0.2,0.2,0.3,0.3,0.2,0.6,0.4,0.3,0.2,0.2,0.2,0.2,1.4,1.5,1.5,1.3,1.5,1.3,1.6,1,1.3,1.4,1,1.5,1,1.4,1.3,1.4,1.5,1,1.5,1.1,1.8,1.3,1.5,1.2,1.3,1.4,1.4,1.7,1.5,1,1.1,1,1.2,1.6,1.5,1.6,1.5,1.3,1.3,1.3,1.2,1.4,1.2,1,1.3,1.2,1.3,1.3,1.1,1.3]
A, B, C, D = [float(i) for i in A], [float(i) for i in B], [float(i) for i in C], [float(i) for i in D]
x1, x2, x3, x4 = A, B, C, D
featureLength = len(A)
t = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
w1 = float(0.8)
w2 = float(0.8)
w3 = float(0.8)
w4 = float(0.8)
alpha = float(0.4)
a = []
b = []
error_A, error_B, error_C, error_D = [], [], [], []
avgErrorA, avgErrorB, avgErrorC, avgErrorD = 0, 0, 0, 0
totalError = []
avgError = float(0)
w1Delta, w2Delta, w3Delta, w4Delta = float(0.0), float(0.0), float(0.0), float(0.0)
EPOCH = 1
FINAL_EPOCH = 0
ITER_ = 1
for iter_ in range(ITER_):
for i in range(featureLength):
if EPOCH == 1:
# mencari a / summation
a.append(x1[i]*w1 + x2[i]*w2 + x3[i]*w3 + x4[i]*w4)
# mencari b / activation function (sigmoid)
b.append(1/(1+exp(-a[i])))
# mencari masing-masing feature error
error_A.append((b[i]-t[i])*A[i])
error_B.append((b[i]-t[i])*B[i])
error_C.append((b[i]-t[i])*C[i])
error_D.append((b[i]-t[i])*D[i])
# mencari a /summation
a[i] = x1[i]*w1 + x2[i]*w2 + x3[i]*w3 + x4[i]*w4
# mencari b / activation function (sigmoid)
b[i] = 1/(1+exp(-a[i]))
# mencari masing-masing feature error
error_A[i] = (b[i]-t[i])*A[i]
error_B[i] = (b[i]-t[i])*B[i]
error_C[i] = (b[i]-t[i])*C[i]
error_D[i] = (b[i]-t[i])*D[i]
# mencari rata-rata error pada masing-masing feature
avgErrorA = sum(error_A)/featureLength
avgErrorB = sum(error_B)/featureLength
avgErrorC = sum(error_C)/featureLength
avgErrorD = sum(error_D)/featureLength
if EPOCH == 1:
#mencari total error untuk masing-masing feature
totalError.append(-t[i]*log(b[i])+(1-t[i])*log(1-b[i]))
#totalError[i] = -t[i]*log(b[i])+(1-t[i])*log(1-b[i])
avgError = sum(totalError)/featureLength
for i in range(featureLength):
# mencari nilai wDelta
w1Delta = w1-alpha*error_A[i]
w2Delta = w2-alpha*error_B[i]
w3Delta = w3-alpha*error_C[i]
w4Delta = w4-alpha*error_D[i]
# mengupdate nilai w
w1, w2, w3, w4 = w1Delta, w2Delta, w3Delta, w4Delta
if avgError <= 0.1:
FINAL_EPOCH = EPOCH
break
print("Epoch ke - ", FINAL_EPOCH, \
"\nError = ", avgError, \
"\nw1 = {0}\nw2 = {1}\nw3 = {2}\nw4 = {3}\n\n".format(w1, w2, w3, w4))
Python
INFO