単純Perceptronの実装
単純PerceptronのPythonコードです。
class Perceptronを定義して、オブジェクトとしてPerceptron学習機を生成し、学習させられるようになっています。
学習率eta、学習回数n_iter、重みを初期化するために使用する乱数の種random_seedは、Perceptronオブジェクトのパラメータにしてあります(浮かせてあります)。
インスタンス化(Perceptron学習機を生成)する際に
格納先 = Perceptron(eta =0.1, n_iter=10, random_seed=1)などとして指定してください。
なお、Referenceは記載したものを参照しましたが、自分が理解しやすいような変数の名前に変えたりしています。
import numpy as np
class Perceptron(object):
#コンストラクタ
def __init__(self, eta, n_iter, random_seed):
self.eta = eta
self.n_iter = n_iter
self.random_seed = random_seed
#フィット関数
def fit(self, X ,y):
rand = np.random.RandomState(self.random_seed)
self.w = rand.normal(loc = 0.0, scale=0.01, size=1 + X.shape[1])
self.errors = []
for k in range(self.n_iter):
error_number = 0
for xi, answer in zip(X,y):
error = answer - self. predict(xi)
self.w[1:] += self.eta * error * xi
self.w[0] += self.eta * error
error_number += int(error != 0)
np.append(self.errors,error_number)
return self
#正味の入力関数
def net_input(self, feature):
return np.dot(self.w[1:], feature) + self.w[0]
#予測を行う関数
def predict(self, feature):
return np.where(self.net_input(feature) >=0.0, 1.0, 0.0)
Reference: "Python機械学習プログラミング 達人データサイエンティストによる理論と実践", Sebastian Raschka and Vahid Mirjalili