X-Git-Url: https://git.piment-noir.org/?p=TP_AA.git;a=blobdiff_plain;f=TP3%2Fexo2%2Ftp3_exo2.py;fp=TP3%2Fexo2%2Ftp3_exo2.py;h=4ca092ddd0015126efe66d2a3b02fceb8b444433;hp=e1c03dde8b616335b18aad4f442c64af8f5e1e68;hb=c60d868ed5752a8c5adef46881c6a8d792351370;hpb=f08c4a957aa85ba34302bfa77dfe92fdd5e9668c diff --git a/TP3/exo2/tp3_exo2.py b/TP3/exo2/tp3_exo2.py index e1c03dd..4ca092d 100755 --- a/TP3/exo2/tp3_exo2.py +++ b/TP3/exo2/tp3_exo2.py @@ -117,7 +117,7 @@ def kg(x, y, sigma=10): def perceptron_k(X, Y, k): coeffs = [] - support_set = [] + support_set = np.array([]) # Go in the loop at least one time classification_error = 1 while not classification_error == 0: @@ -125,26 +125,31 @@ def perceptron_k(X, Y, k): for i in range(X.shape[0]): if Y[i] * f_from_k(coeffs, support_set, k, X[i]) <= 0: classification_error += 1 - support_set.append([Y[i], X[i]]) + np.append(support_set, X[i]) coeffs.append(1) else: coeffs[len(coeffs) - 1] = coeffs[len(coeffs) - 1] + 1 - return coeffs, support_set + return np.array(coeffs), support_set -def f(x, y, w): - return +def f(w, x, y): + return w[0] + w[1] * x + w[2] * y + w[3] * x**2 + w[4] * x * y + w[5] * y**2 -coeffs, support_set = perceptron_k(X, Y, k1) +pl.scatter(X[:, 0], X[:, 1], c=Y, s=training_set_size) +pl.title(u"Perceptron - hyperplan") + +# coeffs, support_set = perceptron_k(X, Y, k1) # coeffs, support_set = perceptron_k(X, Y, kg) -print(coeffs) -print(support_set) +res = training_set_size +# for c, X in zip(coeffs, support_set): +# pl.plot(X[0], 'xr') X = apply_plongement(X, plongement_phi) w = perceptron_nobias(X, Y) -print(w) +for x in range(res): + for y in range(res): + if abs(f(w, -3 / 2 + 3 * x / res, -3 / 2 + 3 * y / res)) < 0.01: + pl.plot(-3 / 2 + 3 * x / res, -3 / 2 + 3 * y / res, 'xb') -pl.scatter(X[:, 0], X[:, 1], c=Y, s=training_set_size) -pl.title(u"Perceptron - hyperplan") pl.show()