• 感知机模型


    感知机是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别

    感知机模型的假设空间为分类超平面wx+b=0

    模型复杂度主要体现在x(x(1),x(2),....x(d))的特征数量也就是x的维度d上

    感知机模型的求解策略(伪代码):

    输入:训练集T={(x1,y1),(x2,y2),....(xn,yn)}其中y为正1和负1,学习率n
    输出:w,b,感知机模型f(x)=sign(wx+b)
    (1)选取初始值w0,b,
    (2)在数据集中选取(xi,yi)
    (3)如果yi(wxi+b)<=0
        w=w+nyixi
        b=b+nyi
    (4)转至(2)

    对于感知机模型我们进行一次训练

    (1)首先是感知机的自编程实现

    import numpy as np
    def main():
        x_train=np.array([[3,3],[4,3],[1,1]])
        y=np.array([1,1,-1])
        perceptron=Myperceptron()
        perceptron.fit(x_train,y)
        draw(x_train,perceptron.w,perceptron.b)
    
    class Myperceptron:
        def _init_:
            self.w=None
            self.b=0
            l_rate=1
    
    def fit(self, x_train,y_train):
        self.w=np.zeros(x_train.shape[1])
        i=0
        while(i<x_train.shape[0]):
            X=x_train
            Y=y_train
            if(Y*(np.dot(self.w,X)+self.b):
                self.w=self.w+self.l_rate*np.dot(Y,X)
                self.b=self.b+self.l_rate*Y
            else:
                i+=1

    (2)使用sklearn的库

    from sklearn.linear_model import Perceptron
    import numpy as np
    x_train=np.array([[3,3],[4,3],[1,1]])
    y=np.array([1,1,-1])
    perceptron=Perceptron()
    perceptron.fit(x_train,y)
    print("w:",perceptron.coef_,"
    ","b:",perceptron.intercept_,"
    ",,"n_iter.",perceptron.n_iter_)
    perceptron.score(x_train,y)
    print("correct rate:{:.0%}".format(res))
  • 相关阅读:
    CSP2020 T1儒略日 暴力模拟90pts代码
    CSP-S 2019 D1T2括号树
    P3593 [POI2015]TAB
    P5145 漂浮的鸭子
    CH0503 奇数码问题
    [NOIP2012]国王游戏 -高精度-贪心-
    费解的开关
    P1040 加分二叉树
    初步学习线段树
    P2758 编辑距离 简单DP
  • 原文地址:https://www.cnblogs.com/Cucucudeblog/p/10824020.html
Copyright © 2020-2023  润新知