übung 3
parent
f4e90fe37b
commit
c978f95588
|
|
@ -0,0 +1,43 @@
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
# %%
|
||||||
|
import numpy as np
|
||||||
|
import nnwplot
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
|
||||||
|
# %% ErrorRate
|
||||||
|
def ErrorRate(Y,T):
|
||||||
|
if Y.ndim==1 or Y.shape[0]==1:
|
||||||
|
errors=Y!=T
|
||||||
|
return errors.sum()/Y.size
|
||||||
|
else: # für mehrere Ausgaben in one-hot Kodierung:
|
||||||
|
errors=Y.argmax(0)!=T.argmax(0)
|
||||||
|
return errors.sum()/Y.shape[1]
|
||||||
|
|
||||||
|
# %%
|
||||||
|
class SLN:
|
||||||
|
def __init__(...): # Konstruktor
|
||||||
|
np.random.seed(42)
|
||||||
|
self._b=np.zeros((AAA,1))
|
||||||
|
self._W=np.random.randn(BBB,CCC)/np.sqrt(DDD)
|
||||||
|
|
||||||
|
# def DeltaTrain(self, X, T, eta, maxIter, maxErrorRate):
|
||||||
|
# N=X.shape[1] # Anzahl Trainingsdaten
|
||||||
|
# plt.ion() # interactive mode on
|
||||||
|
# for it in range(maxIter):
|
||||||
|
# Y = ... # nur ein Aufruf
|
||||||
|
# err = ErrorRate(..., ...)
|
||||||
|
# if (it%20) == 0:
|
||||||
|
# print('#{} err:{}\n{}\n{}'.format(it,err,self._W,self._b))
|
||||||
|
# nnwplot.plotTwoFeatures(...)
|
||||||
|
# plt.pause(0.05) # warte auf GUI event loop (je nach python Version notwendig oder nicht)
|
||||||
|
# if err <= maxErrorRate:
|
||||||
|
# break
|
||||||
|
# # update _W
|
||||||
|
# ...
|
||||||
|
# # update _b
|
||||||
|
# ...
|
||||||
|
# print('#{} err:{}\n{}\n{}'.format(it,err,self._W,self._b))
|
||||||
|
# nnwplot.plotTwoFeatures(...)
|
||||||
|
# plt.pause(0.05) # warte auf GUI event loop (je nach python Version notwendig oder nicht)
|
||||||
|
#
|
||||||
|
# input("Press Enter to continue...") # wenn gewünscht ...
|
||||||
|
|
@ -0,0 +1,151 @@
|
||||||
|
5.1,3.5,1.4,0.2,0
|
||||||
|
4.9,3.0,1.4,0.2,0
|
||||||
|
4.7,3.2,1.3,0.2,0
|
||||||
|
4.6,3.1,1.5,0.2,0
|
||||||
|
5.0,3.6,1.4,0.2,0
|
||||||
|
5.4,3.9,1.7,0.4,0
|
||||||
|
4.6,3.4,1.4,0.3,0
|
||||||
|
5.0,3.4,1.5,0.2,0
|
||||||
|
4.4,2.9,1.4,0.2,0
|
||||||
|
4.9,3.1,1.5,0.1,0
|
||||||
|
5.4,3.7,1.5,0.2,0
|
||||||
|
4.8,3.4,1.6,0.2,0
|
||||||
|
4.8,3.0,1.4,0.1,0
|
||||||
|
4.3,3.0,1.1,0.1,0
|
||||||
|
5.8,4.0,1.2,0.2,0
|
||||||
|
5.7,4.4,1.5,0.4,0
|
||||||
|
5.4,3.9,1.3,0.4,0
|
||||||
|
5.1,3.5,1.4,0.3,0
|
||||||
|
5.7,3.8,1.7,0.3,0
|
||||||
|
5.1,3.8,1.5,0.3,0
|
||||||
|
5.4,3.4,1.7,0.2,0
|
||||||
|
5.1,3.7,1.5,0.4,0
|
||||||
|
4.6,3.6,1.0,0.2,0
|
||||||
|
5.1,3.3,1.7,0.5,0
|
||||||
|
4.8,3.4,1.9,0.2,0
|
||||||
|
5.0,3.0,1.6,0.2,0
|
||||||
|
5.0,3.4,1.6,0.4,0
|
||||||
|
5.2,3.5,1.5,0.2,0
|
||||||
|
5.2,3.4,1.4,0.2,0
|
||||||
|
4.7,3.2,1.6,0.2,0
|
||||||
|
4.8,3.1,1.6,0.2,0
|
||||||
|
5.4,3.4,1.5,0.4,0
|
||||||
|
5.2,4.1,1.5,0.1,0
|
||||||
|
5.5,4.2,1.4,0.2,0
|
||||||
|
4.9,3.1,1.5,0.1,0
|
||||||
|
5.0,3.2,1.2,0.2,0
|
||||||
|
5.5,3.5,1.3,0.2,0
|
||||||
|
4.9,3.1,1.5,0.1,0
|
||||||
|
4.4,3.0,1.3,0.2,0
|
||||||
|
5.1,3.4,1.5,0.2,0
|
||||||
|
5.0,3.5,1.3,0.3,0
|
||||||
|
4.5,2.3,1.3,0.3,0
|
||||||
|
4.4,3.2,1.3,0.2,0
|
||||||
|
5.0,3.5,1.6,0.6,0
|
||||||
|
5.1,3.8,1.9,0.4,0
|
||||||
|
4.8,3.0,1.4,0.3,0
|
||||||
|
5.1,3.8,1.6,0.2,0
|
||||||
|
4.6,3.2,1.4,0.2,0
|
||||||
|
5.3,3.7,1.5,0.2,0
|
||||||
|
5.0,3.3,1.4,0.2,0
|
||||||
|
7.0,3.2,4.7,1.4,1
|
||||||
|
6.4,3.2,4.5,1.5,1
|
||||||
|
6.9,3.1,4.9,1.5,1
|
||||||
|
5.5,2.3,4.0,1.3,1
|
||||||
|
6.5,2.8,4.6,1.5,1
|
||||||
|
5.7,2.8,4.5,1.3,1
|
||||||
|
6.3,3.3,4.7,1.6,1
|
||||||
|
4.9,2.4,3.3,1.0,1
|
||||||
|
6.6,2.9,4.6,1.3,1
|
||||||
|
5.2,2.7,3.9,1.4,1
|
||||||
|
5.0,2.0,3.5,1.0,1
|
||||||
|
5.9,3.0,4.2,1.5,1
|
||||||
|
6.0,2.2,4.0,1.0,1
|
||||||
|
6.1,2.9,4.7,1.4,1
|
||||||
|
5.6,2.9,3.6,1.3,1
|
||||||
|
6.7,3.1,4.4,1.4,1
|
||||||
|
5.6,3.0,4.5,1.5,1
|
||||||
|
5.8,2.7,4.1,1.0,1
|
||||||
|
6.2,2.2,4.5,1.5,1
|
||||||
|
5.6,2.5,3.9,1.1,1
|
||||||
|
5.9,3.2,4.8,1.8,1
|
||||||
|
6.1,2.8,4.0,1.3,1
|
||||||
|
6.3,2.5,4.9,1.5,1
|
||||||
|
6.1,2.8,4.7,1.2,1
|
||||||
|
6.4,2.9,4.3,1.3,1
|
||||||
|
6.6,3.0,4.4,1.4,1
|
||||||
|
6.8,2.8,4.8,1.4,1
|
||||||
|
6.7,3.0,5.0,1.7,1
|
||||||
|
6.0,2.9,4.5,1.5,1
|
||||||
|
5.7,2.6,3.5,1.0,1
|
||||||
|
5.5,2.4,3.8,1.1,1
|
||||||
|
5.5,2.4,3.7,1.0,1
|
||||||
|
5.8,2.7,3.9,1.2,1
|
||||||
|
6.0,2.7,5.1,1.6,1
|
||||||
|
5.4,3.0,4.5,1.5,1
|
||||||
|
6.0,3.4,4.5,1.6,1
|
||||||
|
6.7,3.1,4.7,1.5,1
|
||||||
|
6.3,2.3,4.4,1.3,1
|
||||||
|
5.6,3.0,4.1,1.3,1
|
||||||
|
5.5,2.5,4.0,1.3,1
|
||||||
|
5.5,2.6,4.4,1.2,1
|
||||||
|
6.1,3.0,4.6,1.4,1
|
||||||
|
5.8,2.6,4.0,1.2,1
|
||||||
|
5.0,2.3,3.3,1.0,1
|
||||||
|
5.6,2.7,4.2,1.3,1
|
||||||
|
5.7,3.0,4.2,1.2,1
|
||||||
|
5.7,2.9,4.2,1.3,1
|
||||||
|
6.2,2.9,4.3,1.3,1
|
||||||
|
5.1,2.5,3.0,1.1,1
|
||||||
|
5.7,2.8,4.1,1.3,1
|
||||||
|
6.3,3.3,6.0,2.5,2
|
||||||
|
5.8,2.7,5.1,1.9,2
|
||||||
|
7.1,3.0,5.9,2.1,2
|
||||||
|
6.3,2.9,5.6,1.8,2
|
||||||
|
6.5,3.0,5.8,2.2,2
|
||||||
|
7.6,3.0,6.6,2.1,2
|
||||||
|
4.9,2.5,4.5,1.7,2
|
||||||
|
7.3,2.9,6.3,1.8,2
|
||||||
|
6.7,2.5,5.8,1.8,2
|
||||||
|
7.2,3.6,6.1,2.5,2
|
||||||
|
6.5,3.2,5.1,2.0,2
|
||||||
|
6.4,2.7,5.3,1.9,2
|
||||||
|
6.8,3.0,5.5,2.1,2
|
||||||
|
5.7,2.5,5.0,2.0,2
|
||||||
|
5.8,2.8,5.1,2.4,2
|
||||||
|
6.4,3.2,5.3,2.3,2
|
||||||
|
6.5,3.0,5.5,1.8,2
|
||||||
|
7.7,3.8,6.7,2.2,2
|
||||||
|
7.7,2.6,6.9,2.3,2
|
||||||
|
6.0,2.2,5.0,1.5,2
|
||||||
|
6.9,3.2,5.7,2.3,2
|
||||||
|
5.6,2.8,4.9,2.0,2
|
||||||
|
7.7,2.8,6.7,2.0,2
|
||||||
|
6.3,2.7,4.9,1.8,2
|
||||||
|
6.7,3.3,5.7,2.1,2
|
||||||
|
7.2,3.2,6.0,1.8,2
|
||||||
|
6.2,2.8,4.8,1.8,2
|
||||||
|
6.1,3.0,4.9,1.8,2
|
||||||
|
6.4,2.8,5.6,2.1,2
|
||||||
|
7.2,3.0,5.8,1.6,2
|
||||||
|
7.4,2.8,6.1,1.9,2
|
||||||
|
7.9,3.8,6.4,2.0,2
|
||||||
|
6.4,2.8,5.6,2.2,2
|
||||||
|
6.3,2.8,5.1,1.5,2
|
||||||
|
6.1,2.6,5.6,1.4,2
|
||||||
|
7.7,3.0,6.1,2.3,2
|
||||||
|
6.3,3.4,5.6,2.4,2
|
||||||
|
6.4,3.1,5.5,1.8,2
|
||||||
|
6.0,3.0,4.8,1.8,2
|
||||||
|
6.9,3.1,5.4,2.1,2
|
||||||
|
6.7,3.1,5.6,2.4,2
|
||||||
|
6.9,3.1,5.1,2.3,2
|
||||||
|
5.8,2.7,5.1,1.9,2
|
||||||
|
6.8,3.2,5.9,2.3,2
|
||||||
|
6.7,3.3,5.7,2.5,2
|
||||||
|
6.7,3.0,5.2,2.3,2
|
||||||
|
6.3,2.5,5.0,1.9,2
|
||||||
|
6.5,3.0,5.2,2.0,2
|
||||||
|
6.2,3.4,5.4,2.3,2
|
||||||
|
5.9,3.0,5.1,1.8,2
|
||||||
|
|
||||||
|
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,49 @@
|
||||||
|
# based on: https://github.com/eakbas/tf-svm/blob/master/plot_boundary_on_data.py
|
||||||
|
import numpy as np
|
||||||
|
from matplotlib import pyplot as plt
|
||||||
|
from matplotlib import colors
|
||||||
|
|
||||||
|
|
||||||
|
def plotTwoFeatures(X,T,pred_func):
|
||||||
|
if X.ndim!=2:
|
||||||
|
raise ValueError('X be a matrix (2 dimensional array).')
|
||||||
|
tp=False
|
||||||
|
if X.shape[0]!=2 and X.shape[1]==2:
|
||||||
|
X=X.T
|
||||||
|
tp=True
|
||||||
|
if X.shape[0]!=2:
|
||||||
|
raise ValueError('X must contain exactly 2 features.')
|
||||||
|
|
||||||
|
# determine canvas borders
|
||||||
|
mins = np.amin(X,1);
|
||||||
|
mins = mins - 0.1*np.abs(mins);
|
||||||
|
maxs = np.amax(X,1);
|
||||||
|
maxs = maxs + 0.1*maxs;
|
||||||
|
|
||||||
|
## generate dense grid
|
||||||
|
xs,ys = np.meshgrid(np.linspace(mins[0],maxs[0],300),
|
||||||
|
np.linspace(mins[1], maxs[1], 300));
|
||||||
|
|
||||||
|
|
||||||
|
# evaluate model on the dense grid
|
||||||
|
try:
|
||||||
|
Z = pred_func(np.c_[xs.flatten(), ys.flatten()].T);
|
||||||
|
except:
|
||||||
|
Z = pred_func(np.c_[xs.flatten(), ys.flatten()]);
|
||||||
|
|
||||||
|
if tp:
|
||||||
|
Z=Z.T
|
||||||
|
T=T.T
|
||||||
|
|
||||||
|
if Z.ndim>1 and Z.shape[0]>1: # onehot? -> convert
|
||||||
|
Z=Z.argmax(0)
|
||||||
|
Z = Z.reshape(xs.shape)
|
||||||
|
|
||||||
|
if T.ndim>1 and T.shape[0]>1: # onehot? -> convert
|
||||||
|
T=T.argmax(0)
|
||||||
|
|
||||||
|
# Plot the contour and training examples
|
||||||
|
plt.contourf(xs, ys, Z, cmap=plt.cm.Spectral)
|
||||||
|
plt.scatter(X[0,:], X[1,:], c=T, s=50,
|
||||||
|
cmap=colors.ListedColormap(['orange', 'blue', 'green']))
|
||||||
|
plt.show()
|
||||||
Loading…
Reference in New Issue