Il y avait un article très facile à comprendre, donc je vais le poster. C'est une version améliorée du soi-disant Perset Pron. 2.ADALINE
Cette fois, nous utiliserons les données de l'iris bien connu. https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data Veuillez télécharger ceci.
Cette fois, je voudrais l'implémenter en python. Veuillez noter que certaines parties ne sont pas fonctionnalisées car je les ai écrites dans le cadre du cours sans trop de recherche.
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
df = pd.read_csv(‘iris-data.csv’,header=None)
df_new = df.drop(columns=[1,3])
df_new = df_new.replace(‘Iris-setosa’,0)
df_new = df_new.replace(‘Iris-versicolor’,1)
df_new
eta = 0.001
epoch = 100
cost_=[]
t = np.array(df_new[4])
X = np.array([df_new[0],df_new[2]]).T
w = np.random.normal(0.0, 0.01, size=X.shape[1] + 1)
# Vérifiez la valeur initiale du poids
print(w)
for I in range(epoch):
input_ = np.dot(X,w[1:])+w[0]
predict = np.where(input_>= 0, 1, 0)
errors = t - predict
#Update to weight
w[1:] += eta * np.dot(errors,X)
w[0] += eta * errors.sum()
#Calcul de la fonction de coût
cost = (errors**2).sum() / 2.0
cost_.append(cost)
# Vérification du poids
print(w)
# Terrain pour le moment
x_a = range(4,8)
y_a = [-(w[1]/w[2])*xi-(w[0]/w[2]) for xi in x_a]
plt.scatter(df_new.iloc[:50,0],df_new.iloc[:50,1],label = ‘Iris-versicolor’)
plt.scatter(df_new.iloc[50:,0],df_new.iloc[50:,1],label = ‘Iris-setosa’)
plt.ylabel(“petal length[cm]”)
plt.xlabel(“sepal length[cm]”)
plt.plot(x_a,y_a)
plt.legend()
plt.show()
Je l'ai écrit presque séquentiellement, mais le graphique est bien tracé. Je suis heureux d'avoir pu approfondir ma compréhension de l'adaline.
Comment était-ce? Ce n'est pas du code très propre, mais je l'ai posté parce que j'ai aussi écrit python. À l'avenir, j'aimerais publier des articles de plus haut niveau.