(李航統計学習方法)感知機Python実現


機械学習の三要素:モデル、戦略、アルゴリズムモデル:感知機は二分類線形分類モデルであり、判別モデルに属する.ポリシー:誤分類点からスーパープレーンまでの総距離に基づいています.学習アルゴリズム:感知機に存在する問題を少し感知する:
  • には多解が存在し,解は初期超平面の選択と反復中の誤分類点の選択に依存する.
  • 訓練セットは線形に分けられず、アルゴリズムは収束できず、解決方法:pocketアルゴリズムまたはコア関数を使用する.
  • 異種または問題を解決できない
  • Pythonコード実装:
    import numpy as np
    def train(X_train,Y_train):
        print(np.shape(X_train))
        m,n=np.shape(X_train)
        w=np.zeros((n,1))
        b=0
        while True:
            count=m
            for i in range(m):
                result=Y_train[i]*(np.dot(X_train[i],w)+b)
                if result<=0:
                    count-=1
                    for j in range(n):
                        w[j]=w[j]+X_train[i][j]*Y_train[i]
                    b=b+Y_train[i]
                    print("w:",w)
                    print("b:",b)
                    break
            if count==m:
                break
        return  w,b
    def predict(w,b,X_test):
        y_=np.dot(X_test,w)+b
        return np.where(y_>1,1,-1)
    def main():
        X_train=np.array(([3,3],[4,3],[1,1]))
        Y_train=np.array(([1,1,-1]))
        w,b=train(X_train,Y_train)
        X_test=np.array(([2,3],[-15,6],[1,4]))
        print(predict(w,b,X_test))
    if __name__=='__main__':
        main()