単純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

この記事が気に入ったらサポートをしてみませんか?