支持向量机SVM-手写笔记&手动实现

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

标题接下来用代码来实现它吧~~~~

#!/usr/bin/python
# coding=utf8
import sys;
import random;
import math;

EPS = 0.000000001  # 很小的数字,用于判断浮点数是否等于0
def load_data(filename, data, dim):
    '''
    输入数据格式: label\tindex1:value1\tindex2:value2\tindex3:value3..., 其中index是特征的编号,1开始
    data的数据格式: [[label, sample],[label, sample], ...],  其中sample: [v0, v1, v2, v3, ..., v[dim]]
    '''
    for line in open(filename, 'rt'):
        sample = [0.0 for v in range(0, dim + 1)];
        line = line.rstrip("\r\n\t ");
        fields = line.split("\t");
        label = int(fields[0]);  # LABEL取值: 1 or -1
        sample[0] = 1.0;  # sample第一个元素用于存x0特征, 默认置为1.0[方便把 WX+b => WX]
        for field in fields[1:]:
            kv = field.split(":");
            idx = int(kv[0]);  # ensure idx >= 1
            val = float(kv[1]);
            sample[idx] = val;
        data.append((label, sample));


def svm_train(data4train, dim, W, iterations, lm, lr):
    '''
    目标函数: obj(<X,y>, W) = (对所有<X,y>SUM{
   max{
   0, 1 - W*X*y}}) + lm / 2 * ||W||^2, 即:hinge+L2
    '''
    X = [0.0 for v in range(0, dim + 1)];  # <sample, label> => <X, y>
    grad = 
  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值