机器学习实战python实例(2)SVM优化

本文介绍了如何在机器学习的SVM实践中,通过启发式方法优化SMO算法,选择最大误差差|Ei-Ej|的α进行更新,以减少迭代次数并提高效率。内容包括算法原理及Python实现,并提供了测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简易版的SVM中,SMO算法中α的选择采取遍历且随机的方式,见http://blog.youkuaiyun.com/xiaonannanxn/article/details/52372085
优化版中,我们采取启发式方式选择,即αj选择max|Ei-Ej|,这样就可以让每次更新的步长更大,减少我们的迭代次数,更新上次的SVM.py

# coding:utf-8
from numpy import *
import matplotlib.pyplot as plt

def loadDataSet(filename):
    dataMat = []
    labelMat = []
    fr = open(filename)
    for line in fr.readlines():
        lineArr = line.strip().split('\t')
        dataMat.append([float(lineArr[0]), float(lineArr[1])])
        labelMat.append(float(lineArr[2]))
    return dataMat, labelMat


def selectJrand(i, m):
    j = i
    while j == i:
        j = int(random.uniform(0, m))
    return j


def clipAlpha(aj, H, L):
    if aj > H:
        aj = H
    if aj < L:
        aj = L
    return aj


def show(dataArr, labelArr, alphas, b):
    for i in xrange(len(labelArr)):
        if labelArr[i] == -1:
            plt.plot(dataArr[i][0], dataArr[i][1], 'or')
        elif labelArr[i] == 
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值