资源简介
SVM支持向量机Python实现,大家可以当备用资料存储,也可以直接实际操作
代码片段和文件信息
# -*- coding: utf-8 -*-
# Filename : 01smoSimple.py
from numpy import *
import numpy as np
import operator
import svmMLiA2
import matplotlib.pyplot as plt
# 数据文件
fileName = “testSet.txt“
# 初始化数据集
dataArrlabelArr = svmMLiA2.loadDataSet(fileName)
# smoSimple
# dataMatIn:数据集,classLabels:标签集
# C:在允许有错误分类的情况下,控制最大化间距容错率toler:0.001
# 最大迭代次数maxIter:40
dataMatIn=dataArr; classLabels=labelArr; C=0.6; toler=0.001; maxIter=40
dataMatrix = mat(dataMatIn); labelMat = mat(classLabels).T
b = 0; # 初始化截距
mn = shape(dataMatrix)
alphas = mat(zeros((m1))) # m行全0向量
iter = 0 # 初始化迭代次数
while (iter < maxIter):
alphaPairsChanged = 0
for i in range(m): # m行迭代
# fXi:wTx + b 分类超平面
fXi = float(multiply(alphaslabelMat).T*(dataMatrix*dataMatrix[i:].T)) + b
Ei = fXi - float(labelMat[i]) # 预估分类i与实际分类的误差
# 如果超出容错率和错误分类允许的边界
if ((labelMat[i]*Ei < -toler) and (alphas[i] < C)) or ((labelMat[i]*Ei > toler) and (alphas[i] > 0)):
j = svmMLiA2.selectJrand(im) # 随机选择一个不等于i的j
# 计算fXj 公式同fXi
fXj = float(multiply(alphaslabelMat).T*(dataMatrix*dataMatrix[j:].T)) + b
Ej = fXj - float(labelMat[j]) # 计算预估分类j与实际分类的误差
# 保存计算的 alphaI和alphaJ
alphaIold = alphas[i].copy(); alphaJold = alphas[j].copy();
# 见第二章公式十一
if (labelMat[i] != labelMat[j]):
L = max(0 alphas[j] - alphas[i])
H = min(C C + alphas[j] - alphas[i])
else:
L = max(0 alphas[j] + alphas[i] - C)
H = min(C alphas[j] + alphas[i])
if L==H:
print “L==H“;
continue # 忽略后面的语句继续迭代
# 松弛变量,见第二章公式十五中目标函数的二阶导数
eta = 2.0 * dataMatrix[i:]*dataMatrix[j:].T - dataMatrix[i:]*dataMatrix[i:].T - dataMatrix[j:]*dataMatrix[j:].T
if eta >= 0:
print “eta>=0“;
continue # 忽略后面的语句继续迭代
alphas[j] -= labelMat[j]*(Ei - Ej)/eta # 见第二章公式九
alphas[j] = svmMLiA2.clipAlpha(alphas[j]HL) # 见第二章公式十和公式十二
# 计算调整后的alphas[j] 与 alphaJold是否相等(小于误差)
if (abs(alphas[j] - alphaJold) < 0.00001):
# print “j not moving enough“;
continue # 忽略后面的语句继续迭代
alphas[i] += labelMat[j]*labelMat[i]*(alphaJold - alphas[j])# 更新 alphas[i]
#见第二章公式十四
b1 = b - Ei- labelMat[i]*(alphas[i]-alphaIold)*dataMatrix[i:]*dataMatrix[i:].T - labelMat[j]*(alphas[j]-alphaJold)*dataMatrix[i:]*dataMatrix[j:].T
b2 = b - Ej- labelMat[i]*(alphas[i]-alphaIold)*dataMatrix[i:]*dataMatrix[j:].T - labelMat[j]*(alphas[j]-alphaJold)*dataMatrix[j:]*dataMatrix[j:].T
# 根据KKT条件更新b的取值
if (0 < alphas[i]) and (C > alphas[i]): b = b1
elif (0 < alphas[j]) and (C > alphas[j]): b = b2
else: b = (b1 + b2)/2.0
alphaPairsChanged +
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3905 2014-05-19 15:20 Ch06svmMLiA\01smoSimple.py
文件 1039 2014-05-19 13:41 Ch06svmMLiA\02PlattSMO.py
文件 2090 2014-05-19 15:32 Ch06svmMLiA\03svmRbf.py
文件 129569 2011-05-04 16:03 Ch06svmMLiA\digits.zip
文件 2336 2010-11-03 16:30 Ch06svmMLiA\EXTRAS\notLinSeperable.py
文件 835 2011-02-16 18:24 Ch06svmMLiA\EXTRAS\plotRBF.py
文件 1452 2010-11-23 19:46 Ch06svmMLiA\EXTRAS\plotSupportVectors.py
文件 16320 2010-11-27 09:06 Ch06svmMLiA\svmMLiA.py
文件 17344 2014-05-19 15:38 Ch06svmMLiA\svmMLiA2.py
文件 15337 2014-05-19 15:34 Ch06svmMLiA\svmMLiA2.pyc
文件 2208 2010-11-04 14:13 Ch06svmMLiA\testSet.txt
文件 2945 2010-11-26 18:16 Ch06svmMLiA\testSetRBF.txt
文件 2951 2010-11-26 18:17 Ch06svmMLiA\testSetRBF2.txt
目录 0 2013-09-19 19:05 Ch06svmMLiA\EXTRAS
目录 0 2014-05-19 15:34 Ch06svmMLiA
----------- --------- ---------- ----- ----
198331 15
相关资源
- .nc格式的soms数据
- 带图形界面、车牌识别源码python+ope
- 机器学习对应的相关python代码SVM、C
- 作业一_BP_SVM_RBF函数拟合.7z
- hog_svm_train_python
- 从零开始学习SVM
- SVM解兵王问题_python.zip
- python 实现 纹理图片分类识别 SVM支持
- 使用libsvm数据分类
- Python实现基于SVM的车牌识别程序.zip
- 支持向量机-SVM程序.zip
- 基于python的行人与车辆检测和跟踪实
- 车牌识别系统_python,opencv
- PCB缺陷检测文献总结
- SVM分类手动鼠标手写数字-python版本
- SVR(Python)的使用
- 专门处理不平衡数据集的算法,使用
- 实现svm对鸢尾花进行分类
- 使用支持向量机将二维数据三维化划
- LSSVM,python代码
- misvm 多支持向量机.zip
- 支持向量机几个的代码
- SVM鸢尾花分类Python实现.rar
- 支持向量机SVM python源代码
- python svm 源码实现
- 使用 python手动实现了SVM支持向量机
- 支持向量机SVM——人脸识别
- bow+svm车辆检测
- SVM人脸识别的Python代码
- 基于Python的SVM模块源代码
评论
共有 条评论