nsi:tds:ia:neurones
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:tds:ia:neurones [2022/04/22 09:34] – goupillwiki | nsi:tds:ia:neurones [2022/04/22 11:37] (Version actuelle) – [Module sklearn] goupillwiki | ||
|---|---|---|---|
| Ligne 90: | Ligne 90: | ||
| plt.scatter(x, | plt.scatter(x, | ||
| - | plot_sub_cloud(' | + | plot_sub_cloud(' |
| - | plot_sub_cloud(' | + | plot_sub_cloud(' |
| - | plot_sub_cloud(' | + | plot_sub_cloud(' |
| plt.legend() | plt.legend() | ||
| plt.show() | plt.show() | ||
| Ligne 285: | Ligne 285: | ||
| Y = [] # étiquettes : 1 pour setosa, 0 sinon | Y = [] # étiquettes : 1 pour setosa, 0 sinon | ||
| for row in reader: | for row in reader: | ||
| - | l = float(individu_brut[" | + | l = float(row [" |
| - | w = float(individu_brut[" | + | w = float(row [" |
| X.append((l, | X.append((l, | ||
| - | if individu_brut[' | + | if row[' |
| Y.append(1) | Y.append(1) | ||
| else: | else: | ||
| Ligne 303: | Ligne 303: | ||
| # vous pouvez voir qu'il ne se trompe pas ! | # vous pouvez voir qu'il ne se trompe pas ! | ||
| print(rn.predict(X)) | print(rn.predict(X)) | ||
| + | </ | ||
| + | |||
| + | Si on veut étendre la prédiction aux virginica et versicolor, le résultat n'est pas bon. Pour mieux faire, on ajoute la prise en compte des sépales. De plus, on n'est pas obligés d' | ||
| + | |||
| + | <code python> | ||
| + | import csv | ||
| + | from sklearn.linear_model import Perceptron | ||
| + | |||
| + | with open(' | ||
| + | reader = csv.DictReader(file, | ||
| + | X = [] # paires (petal_length, | ||
| + | Y = [] # étiquettes : 1 pour setosa, 0 sinon | ||
| + | for row in reader: | ||
| + | pl = float(row [" | ||
| + | pw = float(row [" | ||
| + | sl = float(row[" | ||
| + | sw = float(row[" | ||
| + | X.append((pl, | ||
| + | Y.append(row[' | ||
| + | |||
| + | # création du réseau | ||
| + | rn = Perceptron(tol=1e-3) | ||
| + | |||
| + | # apprentissage | ||
| + | rn.fit(X, Y) | ||
| + | |||
| + | # on peut voir ce que prédit notre réseau pour les fleurs du fichier | ||
| + | # on obtient une liste de 0 et de 1 correspondant aux espèces | ||
| + | # vous pouvez voir qu'il ne se trompe pas ! | ||
| + | print(rn.predict(X)) | ||
| + | |||
| + | # et on peut faire un compte des succès : | ||
| + | Yp = rn.predict(X) | ||
| + | count = 0 | ||
| + | for i in range(len(Y)): | ||
| + | if Y[i] == Yp[i]: | ||
| + | count += 1 | ||
| + | print(count/ | ||
| + | </ | ||
| + | |||
| + | On obtient environ 95 % de succès ! | ||
| + | |||
| + | Le travail de formatage est un peu fastidieux. On gagne beaucoup de temps en utilisant Pandas. | ||
| + | |||
| + | <code python> | ||
| + | import pandas | ||
| + | from sklearn.linear_model import Perceptron | ||
| - | # On peut mieux faire en utilisant pandas | ||
| - | import pandas # pandas beaucoup plus puissant que csv | ||
| train = pandas.read_csv(" | train = pandas.read_csv(" | ||
| rn = Perceptron(tol=1e-3) | rn = Perceptron(tol=1e-3) | ||
| - | X = train[[' | + | X = train[[' |
| - | Y = train[[' | + | Y = train[' |
| rn.fit(X, Y) | rn.fit(X, Y) | ||
| print(rn.predict(X)) | print(rn.predict(X)) | ||
nsi/tds/ia/neurones.1650612886.txt.gz · Dernière modification : de goupillwiki
