【感知机模型】手写代码训练 / 使用sklearn的Perceptron模块训练

本文通过读取原始数据并使用自定义的MyPerceptron类与Sklearn库中的Perceptron类进行对比训练,展示了两种方法的运行时间和权重偏置结果,自定义方法耗时更长。

读取原始数据

import pandas as pd
import numpy as np
in_data = pd.read_table('./origin-data/perceptron_15.dat', sep='\s+', header=None)
X_train = np.array(in_data.loc[:,[0,1,2,3]])
y_train = np.array(in_data[4])

训练感知机模型

class MyPerceptron:
  def __init__(self):
    self.w = None
    self.b = 0
    self.l_rate = 1

  def fit(self, X_train, y_train):
  #用样本点的特征数更新初始w,如x1=(3,3)T,有两个特征,则self.w=[0,0]
    self.w = np.zeros(X_train.shape[1])
    i = 0
    while i < X_train.shape[0]:
      X = X_train[i]
      y = y_train[i]
      # 如果y*(wx+b)≤0 说明是误判点,更新w,b
      if y * (np.dot(self.w, X) + self.b) <= 0:
        self.w += self.l_rate * np.dot(y, X)
        self.b += self.l_rate * y
        i=0 #如果是误判点,从头进行检测
      else:
        i+=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值