高斯核函数python代码_支持向量机(SVM)模型python复现 - SMO算法;核技巧;高斯核函数...

'''支持向量机-------------------------------------数据集:Mnist训练集数量:10000测试集数量:1000---------------------------------训练结果:初始化时间:327s训练时间:285s正确率:0.99'''

import numpy as np

import time

from itertools import islice

import math

'''readlines方法读取训练数据--------输入:file:数据地址--------输出:data:转换后的数据label:转换后的标记'''

def LoadData(file):

# 打开数据文件

fr = open(file, 'r')

# 准备两个list存储data和label

data = []

label = []

# 逐行读取数据,使用islice可以直接跳过第一行表头进行逐行读取

for line in islice(fr,1,None):

# 对每一行消去空格,并根据','进行分割

splited = line.strip().split(',')

# 分割后的第一个元素是Label,跳过label遍历所有特征值

# 归一化

int_line = [int(num) / 255 for num in splited[1:]]

# 逐行存储数据

data.append(int_line)

# 将问题转换为二分类问题

if int(splited[0]) == 0:

label.append(1)

else:

label.append(-1)

# 转换成ndarray形式方便后续计算

data = np.array(data)

label = np.array(label)

# 返回数据的特征部分和标记部分

return data, label

'''定义SVM类'''

class SVM:

'''初始化参数'''

def __init__(self, train_data, train_label, sigma, C, toler, itertime):

self.train_data = train_data # 训练集数据

self.train_label = train_label # 训练集标记

self.m, self.n = np.shape(train_data) # self.m为训练集样本容量,self.n为特征数量

self.sigma = sigma # 高斯核分母上的超参数

self.KernalMatrix = self.CalKernalMatrix() # 高斯核矩阵

self.alpha = np.zeros(self.m) # 初始化拉格朗日向量,长度为训练集样本容量

self.b = 0 # 初始化参数b

self.C = C # 惩罚参数

self.toler = toler # 松弛变量

self.itertime = itertime # 迭代次数

self

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值