ü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