支持向量机(SVM)算法的Python实现
更多机器学习算法的实现,详见 https://github.com/WiseDoge/ML-by-Python
import numpy as np
class SVC(object):
"""
支持向量机(Support Vector Machine)二分类器, 默认的核函数是
多项式函数。
使用时,正类用1表示,负类用-1表示。
如果有必要,可自行编写新的核函数。
"""
def __init__(self, C, e=0.3, kernel='poly'):
'''
:param C: 常数C,用来控制非线性部分的权重
:param e: 误差,做为训练停止的条件
:param kernel: 核函数,默认为多项式函数
'''
self.kernel = self.poly_kern
self.e = e
self.C = C
self.bias = 0
def poly_kern(self, x, z, p=1):
'''
:param x: 第一个向量
:param z: 第二个向量
:param p: 指数,默认为1,代表线性。
:return: (np.dot(x, z) + 1) ** p
'''
return (np.dot(x, z) + 1) ** p
def fit(self, train_x, train_y):
'''
:param train_x: 训练集X
:param train_y: 训练集Y
:re