vector函数python_Smooth Support Vector Machine - Python实现

1 #Smooth Support Vector Machine之实现

2

3 importnumpy4 from matplotlib importpyplot as plt5

6

7 def spiral_point(val, center=(0, 0)):8 rn = 0.4 * (105 - val) / 104

9 an = numpy.pi * (val - 1) / 25

10

11 x0 = center[0] + rn *numpy.sin(an)12 y0 = center[1] + rn *numpy.cos(an)13 z0 = -1

14 x1 = center[0] - rn *numpy.sin(an)15 y1 = center[1] - rn *numpy.cos(an)16 z1 = 1

17

18 return(x0, y0, z0), (x1, y1, z1)19

20

21 defspiral_data(valList):22 dataList = list(spiral_point(val) for val invalList)23 data0 = numpy.array(list(item[0] for item indataList))24 data1 = numpy.array(list(item[1] for item indataList))25 returndata0, data126

27

28 #生成训练数据集

29 trainingValList = numpy.arange(1, 101, 1)30 trainingData0, trainingData1 =spiral_data(trainingValList)31 trainingSet =numpy.vstack((trainingData0, trainingData1))32 #生成测试数据集

33 testValList = numpy.arange(1.5, 101.5, 1)34 testData0, testData1 =spiral_data(testValList)35 testSet =numpy.vstack((testData0, testData1))36

37

38 classSSVM(object):39

40 def __init__(self, trainingSet, c=1, mu=1, beta=100):41 self.__trainingSet = trainingSet #训练集数据

42 self.__c = c #误差项权重

43 self.__mu = mu #gaussian kernel参数

44 self.__beta = beta #光滑化参数

45

46 self.__A, self.__D = self.__get_AD()47

48

49 defget_cls(self, x, alpha, b):50 A, D = self.__A, self.__D

51 mu = self.__mu

52

53 x = numpy.array(x).reshape((-1, 1))54 KAx = self.__get_KAx(A, x, mu)55 clsVal = self.__calc_hVal(KAx, D, alpha, b)56 if clsVal >=0:57 return 1

58 else:59 return -1

60

61

62 defget_accuracy(self, dataSet, alpha, b):63 '''

64 正确率计算65 '''

66 rightCnt =067 for row indataSet:68 clsVal = self.get_cls(row[:2], alpha, b)69 if clsVal == row[2]:70 rightCnt += 1

71 accuracy = rightCnt /dataSet.shape[0]72 returnaccuracy73

74

75 def optimize(self, maxIter=100, epsilon=1.e-9):76 '''

77 maxIter: 最大迭代次数78 epsilon: 收敛判据, 梯度趋于0则收敛79 '''

80 A, D = self.__A, self.__D

81 c = self.__c

82 mu = self.__mu

83 beta = self.__beta

84

85 alpha, b = self.__init_alpha_b((A.shape[1], 1))86 KAA = self.__get_KAA(A, mu)87

88 JVal = self.__calc_JVal(KAA, D, c, beta

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值