Finish TP3 exo1 for real.
authorJérôme Benoit <jerome.benoit@piment-noir.org>
Wed, 14 Nov 2018 09:27:45 +0000 (10:27 +0100)
committerJérôme Benoit <jerome.benoit@piment-noir.org>
Wed, 14 Nov 2018 09:27:45 +0000 (10:27 +0100)
Signed-off-by: Jérôme Benoit <jerome.benoit@piment-noir.org>
TP1/exo2/TP1prog3.py
TP3/exo1/tp3_exo1.py
TP3/exo2/tp3_exo2.py

index 4daa73f4dc91a3e9bb1d555b53a97f4e738a2fe6..9655d0e253817d9640b46f069aa514cb692ad3f4 100755 (executable)
@@ -5,7 +5,6 @@ import random
 from sklearn import neighbors
 from sklearn.cross_validation import train_test_split
 from sklearn.datasets import load_iris
-
 irisData = load_iris()
 
 X = irisData.data
index 73dd307de18e12ea18c25324c03142001c04c12d..02416ba46171c462dde7934537888c37661bdd3f 100755 (executable)
@@ -28,7 +28,7 @@ def generateData2(n):
     Generates a 2D linearly separable dataset with 2n samples.
     The third element of the sample is the label
     """
-    xb = (rand(n) * 2 - 1) / 2 - 0.5
+    xb = (rand(n) * 2 - 1) / 2 + 0.5
     yb = (rand(n) * 2 - 1) / 2
     xr = (rand(n) * 2 - 1) / 2 + 1.5
     yr = (rand(n) * 2 - 1) / 2 - 0.5
@@ -68,10 +68,15 @@ X = complete(X)
 w = perceptron_nobias(X, Y)
 # w is orthogonal to the hyperplan
 # with generateData
+# plot arguments format is pl.plot([x1,x2],[y1,y2])
+# w[0]x + w[1]y = 0, so y = -w[0]x / w[1]
 # pl.plot([-1, 1], [w[0] / w[1], -w[0] / w[1]])
 # with generateData2 and complete
-# FIXME: the hyperplan equation is not correct
-pl.plot([0, -1 / w[1]], [w[0] / w[1] - 1 / w[1], -w[0] / w[1] - 1 / w[1]])
+# w[0]x + w[1]y + w[2] = 0, so y = -(w[0]x + w[2]) / w[1]
+x_start1 = -0.5
+x_start2 = 2.5
+pl.plot([x_start1, x_start2], [-(w[0] * x_start1 + w[2]) /
+                               w[1], -(w[0] * x_start2 + w[2]) / w[1]])
 pl.scatter(X[:, 0], X[:, 1], c=Y, s=training_set_size)
 pl.title(u"Perceptron - hyperplan")
 pl.show()
index 2a831877d1afa81b9794af3a9cc89541789eb242..e1c03dde8b616335b18aad4f442c64af8f5e1e68 100755 (executable)
@@ -28,7 +28,7 @@ def generateData2(n):
     Generates a 2D linearly separable dataset with 2n samples.
     The third element of the sample is the label
     """
-    xb = (rand(n) * 2 - 1) / 2 - 0.5
+    xb = (rand(n) * 2 - 1) / 2 + 0.5
     yb = (rand(n) * 2 - 1) / 2
     xr = (rand(n) * 2 - 1) / 2 + 1.5
     yr = (rand(n) * 2 - 1) / 2 - 0.5
@@ -132,8 +132,14 @@ def perceptron_k(X, Y, k):
     return coeffs, support_set
 
 
-print(perceptron_k(X, Y, k1))
-# print(perceptron_k(X, Y, kg))
+def f(x, y, w):
+    return
+
+
+coeffs, support_set = perceptron_k(X, Y, k1)
+# coeffs, support_set = perceptron_k(X, Y, kg)
+print(coeffs)
+print(support_set)
 
 X = apply_plongement(X, plongement_phi)
 w = perceptron_nobias(X, Y)