资源简介
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批量灰度化处理图片
- calendar.py
- Python最小二乘法拟合直线
- python五子棋双人对战
- pid code python
- python项目监控
- 声学语音处理 python 源码
- Python实现循环神经网络RNN
- python下元胞自动机的代码和相应的绘
- python 视频学习
- SIFT的Python 代码
- pythonympx.rar
- python selenium模块刷B站播放量
- pycuda 用于加速python 3.6
- 社团检测经典算法实现 python
- [『编程语言』] 小甲鱼零基础入门学
- tecplot二次开发
- 区块链入门学习代码 含完整挖矿、
- 随机森林做泰坦尼克号案例的Python实
- 基于Python的SVM解决异或问题
- Tensorflow笔记-中国大学全部讲义源代码
- Python识别深圳信用网验证码的完整代
- C4.5决策树算法的Python代码和数据样本
- python音乐播放+滤波器
- 树莓派利用python、opencv、PyALPR识别车
- python 数独游戏源码
- 爬取某块区域的实时交通态势数据,
- Anaconda3-5.3.1-Windows-x86_64 (Python3.x版本
- DS_Store文件泄漏利用python脚本
- ArcGIS10.1中利用python语言批量实现遥感
评论
共有 条评论