Es gab einen sehr leicht verständlichen Artikel, daher werde ich ihn veröffentlichen. Es ist eine verbesserte Version des sogenannten Perset Pron. 2.ADALINE
Dieses Mal werden wir die ziemlich berühmten Irisdaten verwenden. https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data Bitte laden Sie dies herunter.
Dieses Mal möchte ich es in Python implementieren. Bitte beachten Sie, dass einige Teile nicht funktionalisiert sind, da ich sie als Teil der Klasse ohne viel Recherche geschrieben habe.
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)
# Überprüfen Sie den Anfangswert des Gewichts
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
# Auf Gewicht aktualisieren
w[1:] += eta * np.dot(errors,X)
w[0] += eta * errors.sum()
#Berechnung der Kostenfunktion
cost = (errors**2).sum() / 2.0
cost_.append(cost)
# Überprüfen Sie das Gewicht
print(w)
# Handlung vorerst
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()
Ich habe es fast nacheinander geschrieben, aber die Grafik ist gut dargestellt. Ich bin froh, dass ich mein Verständnis von Adalin vertiefen konnte.
Wie war das? Es ist kein sehr sauberer Code, aber ich habe ihn gepostet, weil ich auch Python geschrieben habe. In Zukunft möchte ich übergeordnete Artikel veröffentlichen.
Recommended Posts