资源简介
python实现支持向量机svm算法,主要用于数值型数据的二分类算法

代码片段和文件信息
#coding:UTF-8
import numpy as np
import pickle as pickle
class SVM:
def __init__(self dataSet labels C toler kernel_option):
self.train_x = dataSet # 训练特征
self.train_y = labels # 训练标签
self.C = C # 惩罚参数
self.toler = toler # 迭代的终止条件之一
self.n_samples = np.shape(dataSet)[0] # 训练样本的个数
self.alphas = np.mat(np.zeros((self.n_samples 1))) # 拉格朗日乘子
self.b = 0
self.error_tmp = np.mat(np.zeros((self.n_samples 2))) # 保存E的缓存
self.kernel_opt = kernel_option # 选用的核函数及其参数
self.kernel_mat = calc_kernel(self.train_x self.kernel_opt) # 核函数的输出
def cal_kernel_value(train_x train_x_i kernel_option):
‘‘‘样本之间的核函数的值
input: train_x(mat):训练样本
train_x_i(mat):第i个训练样本
kernel_option(tuple):核函数的类型以及参数
output: kernel_value(mat):样本之间的核函数的值
‘‘‘
kernel_type = kernel_option[0] # 核函数的类型,分为rbf和其他
m = np.shape(train_x)[0] # 样本的个数
kernel_value = np.mat(np.zeros((m 1)))
if kernel_type == ‘rbf‘: # rbf核函数
sigma = kernel_option[1]
if sigma == 0:
sigma = 1.0
for i in range(m):
diff = train_x[i :] - train_x_i
kernel_value[i] = np.exp(diff * diff.T / (-2.0 * sigma**2))
else: # 不使用核函数
kernel_value = train_x * train_x_i.T
return kernel_value
def calc_kernel(train_x kernel_option):
‘‘‘计算核函数矩阵
input: train_x(mat):训练样本的特征值
kernel_option(tuple):核函数的类型以及参数
output: kernel_matrix(mat):样本的核函数的值
‘‘‘
m = np.shape(train_x)[0] # 样本的个数
kernel_matrix = np.mat(np.zeros((m m))) # 初始化样本之间的核函数值
for i in range(m):
kernel_matrix[: i] = cal_kernel_value(train_x train_x[i :] kernel_option)
return kernel_matrix
def cal_error(svm alpha_k):
‘‘‘误差值的计算
input: svm:SVM模型
alpha_k(int):选择出的变量
output: error_k(float):误差值
‘‘‘
output_k = float(np.multiply(svm.alphas svm.train_y).T * svm.kernel_mat[: alpha_k] + svm.b)
error_k = output_k - float(svm.train_y[alpha_k])
return error_k
def update_error_tmp(svm alpha_k):
‘‘‘重新计算误差值
input: svm:SVM模型
alpha_k(int):选择出的变量
output: 对应误差值
‘‘‘
error = cal_error(svm alpha_k)
svm.error_tmp[alpha_k] = [1 error]
def select_second_sample_j(svm alpha_i error_i):
‘‘‘选择第二个样本
input: svm:SVM模型
alpha_i(int):选择出的第一个变量
error_i(float):E_i
output: alpha_j(int):选择出的第二个变量
error_j(float):E_j
‘‘‘
# 标记为已被优化
svm.error_tmp[alpha_i] = [1 error_i]
candidateAlphaList = np.nonzero(svm.error_tmp[: 0].A)[0]
maxStep = 0
alpha_j = 0
error_j = 0
if len(candidateAlphaList) > 1:
for alpha_k in candidateAlphaList:
if alpha_k == alpha_i:
continue
error_k = cal_error(svm alpha_k)
if abs(error_k - error_i) > maxStep:
maxStep = abs(error_k - error_i)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 15958 2018-05-11 11:51 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\readme.docx
文件 27670 2018-05-11 11:13 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM\heart_scale
文件 620514 2018-05-11 11:46 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM\model_file
文件 318 2018-05-11 11:48 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM\result
文件 9710 2018-05-11 11:46 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM\svm.py
文件 2418 2018-05-11 11:48 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM\svm_test.py
文件 6877 2018-05-11 11:13 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM\svm_test_data
文件 1769 2018-05-11 11:30 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM\svm_train.py
文件 6662 2018-05-11 11:46 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM\__pycache__\svm.cpython-36.pyc
文件 37193 2018-05-11 11:47 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\svm.jpg
目录 0 2018-05-11 11:51 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM\__pycache__
目录 0 2018-05-11 11:51 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码\SVM
目录 0 2018-05-12 15:01 Python实现支持向量机算法SVM源代码\Python实现支持向量机算法SVM源代码
目录 0 2019-03-03 19:12 Python实现支持向量机算法SVM源代码
----------- --------- ---------- ----- ----
729089 14
- 上一篇:python批量灰度化处理图片
- 下一篇:机器学习之KNN识别验证码
相关资源
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
- 量化交易(附python常见函数的使用方
- python 名字用字排行
评论
共有 条评论