全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 数据分析与数据挖掘
622 1
2022-10-25
感知机(Perceptron)1957年由Rosenblatt提出,是神经网络与支持向量机的基础。感知机学习算法具有简单而易于实现的优点,分为原始形式和对偶形式输入为实例的特征向量,输出为实例的类别,取+1和-1感知机对应于输入空间中将实例划分为正负两类的分离超平面,属于判别模型导入基于误分类的损失函数利用梯度下降法对损失函数进行极小化'''import numpy as npclass Dual_Perceptron(object):        def __init__(self, X, y,  eta = 1, n_iter = 100):        self.eta = eta        self.n_iter = n_iter            def fit(self, X, y):        self.errors_ = []        self.Remp_ = []        self.Gram = np.zeros((len(X), len(X)))        for i in np.arange(len(X)):            for j in np.arange(len(X)):                self.Gram[i,j] = self.Gram[j,i] = X[i] @ X[j] + 1            self.alpha = np.zeros(len(X))        self.b = 0        self._L = y * self.alpha @ self.Gram        n = 1        while np.any(self._L <= 0) and n <= self.n_iter:            error_id = np.argmax(self._L <= 0)            self.alpha[error_id] += self.eta            self.b += self.eta * y[error_id]            self._L = y * (y * self.alpha @ self.Gram)            Remp = -1 * np.sum(self._L[self._L <= 0])            print(f'Round {n}: alpha: {self.alpha}, Remp: {Remp}')            self.errors_.append(np.sum(self._L <= 0))            self.Remp_.append(Remp)            n += 1                    self.w = self.alpha * y @ X        print(f'w: {self.w}, b: {self.b}')                def predict(self, X):        return np.sign(X @ self.w + self.b)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-10-25 12:22:00
点个赞加点人气
感谢分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群