mirror of
				https://github.com/gsi-upm/sitc
				synced 2025-10-30 23:18:18 +00:00 
			
		
		
		
	Exercise 3 included
This commit is contained in:
		
							
								
								
									
										754
									
								
								ml2/3_9_Exercise_3.ipynb
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										754
									
								
								ml2/3_9_Exercise_3.ipynb
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								ml2/images/multilayerperceptron_network.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								ml2/images/multilayerperceptron_network.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 87 KiB | 
							
								
								
									
										75
									
								
								ml2/spiral.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										75
									
								
								ml2/spiral.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,75 @@ | ||||
| import numpy as np | ||||
| import matplotlib.pyplot as plt | ||||
| from math import cos, sin | ||||
| from scipy.constants import golden, pi | ||||
|  | ||||
| def gen_spiral_dataset(n_examples=500, n_classes=2, a=None, b=None, pi_space=3): | ||||
|     n_spirals = n_classes | ||||
|      | ||||
|     # default: golden spiral | ||||
|     if a is None: | ||||
|         a = golden | ||||
|     if b is None: | ||||
|         b = 2/pi | ||||
|  | ||||
|     theta = np.linspace(0,pi_space*pi, num=n_examples) | ||||
|     xy = np.zeros((n_examples,2)) | ||||
|  | ||||
|     # logaritmic spirals | ||||
|     x_golden_parametric = lambda a, b, theta: a**(theta*b) * cos(theta) | ||||
|     y_golden_parametric = lambda a, b, theta: a**(theta*b) * sin(theta) | ||||
|     x_golden_parametric = np.vectorize(x_golden_parametric) | ||||
|     y_golden_parametric = np.vectorize(y_golden_parametric) | ||||
|  | ||||
|     # rotation matrix | ||||
|     gen_rotation = lambda theta: np.array([[cos(theta), -sin(theta)],[sin(theta), cos(theta)]]) | ||||
|  | ||||
|     # rotation angles | ||||
|     rot_division = (2*pi) / n_spirals | ||||
|     rot_thetas = [i * rot_division for i in range(n_spirals)] | ||||
|  | ||||
|     XY = np.zeros((2, n_examples, n_spirals)) | ||||
|     for i in range(n_spirals): | ||||
|         x = x_golden_parametric(a, b, theta) | ||||
|         y = y_golden_parametric(a, b, theta) | ||||
|         xy = np.vstack((x,y)) | ||||
|         R = gen_rotation(rot_thetas[i]) | ||||
|         xy_ = np.dot(R.T, xy) | ||||
|         XY[:,:,i] = xy_ | ||||
|      | ||||
|     return XY | ||||
|  | ||||
| def load_spiral_dataset(n_examples=300, n_classes=2): | ||||
|     XY = gen_spiral_dataset(n_examples, n_classes) | ||||
|     X_s = [] | ||||
|     y_s = [] | ||||
|     for i in range(XY.shape[2]): | ||||
|         X = XY[:,:,i].T | ||||
|         X_s.append(X) | ||||
|         y = np.array([i] * XY.shape[1]).T | ||||
|         y_s.append(y) | ||||
|     X = np.vstack(X_s) | ||||
|     y = np.hstack(y_s) | ||||
|      | ||||
|     return X, y | ||||
|  | ||||
| def plot_dataset(X,y): | ||||
|     cm = plt.cm.RdBu | ||||
|     plt.scatter(X[:,0], X[:,1], c=y, cmap=cm, lw=.5, s=10) | ||||
|      | ||||
| def plot_decision_surface(X, y, classifier): | ||||
|     h = .02 | ||||
|     cm = plt.cm.RdBu | ||||
|      | ||||
|     x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5 | ||||
|     y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5 | ||||
|     xx, yy = np.meshgrid(np.arange(x_min, x_max, h), | ||||
|                          np.arange(y_min, y_max, h)) | ||||
|      | ||||
|  | ||||
|     z = classifier.predict(np.c_[xx.ravel(), yy.ravel()])#[:, 1] | ||||
|      | ||||
|     z = z.reshape(xx.shape) | ||||
|     plt.contourf(xx, yy, z, cmap=cm, alpha=.8) | ||||
|      | ||||
|     plot_dataset(X, y) | ||||
		Reference in New Issue
	
	Block a user