目录

    • 数据
    • 导入包
    • 导入数据
    • 定义核函数
    • 初始化实例
    • 最小二乘法求 参数
      • 对def leastSquares() 方法求参数 alphas,b 的解释说明
        • 方程求解
        • hstack() 堆栈数组水平顺序(列)
        • vstack():堆栈数组垂直顺序(行)
    • 预测
    • 主函数

      数据

    • 导入包

      from numpy import *
      
    • 导入数据

    • def loadDataSet(filename):'''导入数据input: filename:文件名output:dataMat(list)样本特征labelMat(list)样本标签'''dataMat = []labelMat = []fr = open(filename)for line in fr.readlines():lineArr = line.strip().split('\t')dataMat.append([float(lineArr[0]),float(lineArr[1])])labelMat.append(float(lineArr[2]))return dataMat,labelMat
      ————————————————
      版权声明:本文为CSDN博主「Performer_Cherry」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
      原文链接:https://blog.csdn.net/weixin_43442290/article/details/105615219
      


    定义核函数

    支持向量机的几种核函数
    LSSVM

    def kernelTrans(X,A,kTup):'''数据集中每一个数据向量与数据A的核函数值input: X--特征数据集A--输入向量kTup--核函数参量定义output: K--数据集中每一个数据向量与A的核函数值组成的矩阵'''# 本实验对该方法的调用# self.K[:,i] = kernelTrans(self.X, self.X[i,:], kTup)X = mat(X)m,n = shape(X)K = mat(zeros((m,1)))if kTup[0] == 'lin':# 线性函数K = X * A.Telif kTup[0] == 'rbf':# rbf 径向基函数# 对矩阵 K 的每一列的每一行进行核计算for j in range(m):deltaRow = X[j,:] - AK[j] = deltaRow * deltaRow.TK = exp(K/(-1 * kTup[1] ** 2))else: raise NameError('Houston We Have a Problem -- That Kernel is not recognized')return K
    ————————————————


  • 。。。。。。。


    以上计算重复9次


  • 初始化实例

class optStruct:def __init__(self,dataMatIn,classLabels,C,kTup):self.X = dataMatInself.labelMat = classLabelsself.C = Cself.m = shape(dataMatIn)[0]self.alphas = mat(zeros((self.m,1)))self.b = 0self.K = mat(zeros((self.m,self.m)))  #特征数据集合中向量两两核函数值组成的矩阵,[i,j]表示第i个向量与第j个向量的核函数值for i in range(self.m):# 对 矩阵 K 的每一列进行核计算self.K[:,i] = kernelTrans(self.X, self.X[i,:], kTup)print("i:",i)print("self.K:\n",self.K)# print(KKKKK)
————————————————



循环9次


最小二乘法求 参数

def leastSquares(dataMatIn,classLabels,C,kTup):'''最小二乘法求解alpha序列input:dataMatIn(list):特征数据集classLabels(list):分类标签集C(float):参数,(松弛变量,允许有些数据点可以处于分隔面的错误一侧)kTup(string): 核函数类型和参数选择 output:b(float):w.T*x+b=y中的balphas(mat):alphas序列      '''# 调用 optStruct 方法,计算得到 核矩阵 K oS = optStruct(mat(dataMatIn),mat(classLabels).transpose(),C,kTup)# print("oS.X:\n",oS.X) # 100 * 2# print("oS.labelMat:\n",oS.labelMat) # 100 * 1# print("oS.C:\n",oS.C)# print("oS.m:\n",oS.m)# print("alphas:\n",oS.alphas)# print("oS.b:\n",oS.b) # 0# print("oS.K:\n",oS.K) ## print("oS.K.shape:\n",oS.K.shape) # 100 * 100# 打印自定义变量得到的参数 b ,alphas#1.参数设置unit = mat(ones((oS.m,1)))  #[1,1,...,1].T# print("unit:\n",unit)I = eye(oS.m) # m 行 m 列的单位矩阵# print("I:\n",I)zero = mat(zeros((1,1)))# print("zero:\n",zero)# print("zero.shape:",zero.shape)# hstack():堆栈数组水平顺序(列)upmat = hstack((zero,unit.T)) # hstack((1,1),(1,m)) = (1,10)# print("upmat:\n",upmat)# print("upmat.shape:\n",upmat.shape)downmat = hstack((unit,oS.K + I/float(C))) # hstack((m,1),(m,m)+(m,m)) = (m,m+1)# print("downmat:\n",downmat)# print("downmat.shape:\n", downmat.shape)##2.方程求解#lssvm中求解方程的左边矩阵completemat = vstack((upmat,downmat))  # vstack((1,10),(9,10)) = (10,10)# print("completemat:\n",completemat)# print("completemat.shape:\n",completemat.shape)# lssvm中求解方程的右边矩阵rightmat = vstack((zero,oS.labelMat))  # vstack((1,1),(m,1)) = (m+1,1)   # print("rightmat:\n",rightmat)# print("rightmat.shape",rightmat.shape)# completemat.I : completemat 的逆矩阵b_alpha = completemat.I * rightmat # 10 *1# print("b_alpha:\n",b_alpha)# print("b_alpha:\n",b_alpha.shape)oS.b = b_alpha[0,0]# print("oS.b:",oS.b)for i in range(oS.m):oS.alphas[i,0] = b_alpha[i+1,0]# print("oS.alphas:\n",oS.alphas)# print("oS.alphas.shape:\n",oS.alphas.shape)return oS.alphas,oS.b,oS.K
————————————————

对def leastSquares() 方法求参数 alphas,b 的解释说明

方程求解








unit = mat(ones((oS.m,1)))  # m行1列的 全1 矩阵

I = eye(oS.m) # m 行 m 列的单位矩阵

zero = mat(zeros((1,1)))  # 1行1列的0矩阵

hstack() 堆栈数组水平顺序(列)

numpy中的stack操作:hstack()、vstack()、stack()、dstack()、vsplit()、concatenate()

upmat = hstack((zero,unit.T)) # hstack():堆栈数组水平顺序(列)


downmat = hstack((unit,oS.K + I/float(C)))



completemat = vstack((upmat,downmat))  #lssvm中求解方程的左边矩阵

vstack():堆栈数组垂直顺序(行)



rightmat = vstack((zero,oS.labelMat))    # lssvm中求解方程的右边矩阵

b_alpha = completemat.I * rightmat

oS.b = b_alpha[0,0]

for i in range(oS.m):oS.alphas[i,0] = b_alpha[i+1,0]


预测

def predict(alphas,b,dataMat,testVec):'''预测结果input:alphas(mat):Lagrange乘子序列b(float):分隔超平面的偏置dataMat()output:sign(float(predict_value))(int):预测样本的类别'''Kx = kernelTrans(dataMat,testVec,kTup)   #可以对alphas进行稀疏处理找到更准确的值predict_value =  Kx.T * alphas + b
#    print('预测值为:%f'%predict_value)
#    print('分类结果为:%f'%sign(float(predict_value)))return sign(float(predict_value))
————————————————

主函数

if __name__ == '__main__':##1.导入数据print('-----------------------------1.Load Data-------------------------------')dataMat,labelMat = loadDataSet('testSetRBF.txt')# print("dataMat:\n",dataMat)# print("labelMat:\n",labelMat)C = 0.6k1 = 0.3kernel = 'rbf'print("kernel:",kernel) # 打印:kernel: rbfkTup = (kernel,k1)print("kTup:",kTup) # 打印:kTup:('rbf', 0.3)##2.训练模型print('----------------------------2.Train Model------------------------------')alphas,b,K = leastSquares(dataMat,labelMat,C,kTup)# print("alphas:\n",alphas)# print("b:\n",b)#3.计算训练误差print('----------------------------3.Calculate Train Error--------------------')error = 0.0Y_predict = []# print("训练集有 %int 条数据"%len(dataMat))for i in range(len(dataMat)):test = predict(alphas,b,dataMat,dataMat[i])Y_predict.append(test)if test != float(labelMat[i]):error +=1.0# print("Y_predict:\n",Y_predict)errorRate = error/len(dataMat)# print('---------------训练误差为:%f-------------------'%errorRate)
————————————————

LSSVM,python代码实例相关推荐

  1. 20条非常实用的Python代码实例

    据说Python之父-Guido Van Rossum打算让CPython更快,速度直接翻五倍,这是实实在在的好消息.Python一直以来被诟病速度慢,影响开发效率,希望这次Guido老爷子能帮pyt ...

  2. 利用OpenSearch API检索和下载数据 附Python代码实例

    利用OpenSearch API检索和下载数据 附Python代码实例 在数据下载过程中,我们常常会需要下载非常多的数据文件,这时我们可以利用wget等软件或者编写数据下载脚本来实现数据下载的批处理. ...

  3. python代码实例sicket_Python socket聊天脚本代码实例

    这篇文章主要介绍了Python socket聊天脚本代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 没有前端,多开了一条线程用于接收信息. ...

  4. python代码实例-python程序实例

    广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品.未来,我们一起乘风破浪,创造无限可能. github.comteamssixdouluo-download.gi ...

  5. 简单python代码实例_求简洁优美的python代码例子、片段、参考资料

    展开全部 建2113议你去看一本书:<计算机程序5261的构造与解释>.里面4102用的语言是Scheme,一种Lisp的方言.通1653过这本书学习程序的抽象.封装,以及重要的函数式编程 ...

  6. 【路径规划】 Optimal Trajectory Generation in Frenet阅读记录 (附python代码实例)

    参考与前言 2010年,论文 Optimal Trajectory Generation for Dynamic Street Scenarios in a Frenet Frame 地址:https ...

  7. 【机器学习代码例】LSSVM,python代码实例

    机器学习算法 代码下载链接 最小二乘支持向量详解 目录 数据 导入包 导入数据 定义核函数 初始化实例 最小二乘法求 参数 对def leastSquares() 方法求参数 alphas,b 的解释 ...

  8. 有趣的python代码实例_Python之路:200个Python有趣的小例子一网打尽

    概述 博主最近在学习python,看完了一整套学习视频,然后呃呃呃,还是用不太流畅.碰巧在全球最大的 同性交友论坛GayHub(呸!是开源代码托管平台Github)上面发现了一个项目,该项目列举了20 ...

  9. python计算中文文件字数_完成计算文本文件字数的Python代码实例

    这篇文章主要介绍了Python实现统计文本文件字数的方法,涉及Python针对文本文件读取及字符串转换.运算等相关操作技巧,需要的朋友可以参考下 本文实例讲述了Python实现统计文本文件字数的方法. ...

最新文章

  1. tomcat的jsp页面超过65535,导致500报错
  2. Selenium+java - 借助autolt完成上传文件操作
  3. UVA 1151 Buy or Build MST(最小生成树)
  4. 【英语学习】【English L06】U03 House L3 How is your house hunt going?
  5. (四)使用TensorFlow和Keras构建AI语言翻译
  6. 触发器如何通知websocket_「Web应用架构」如何扩展WebSockets
  7. MFC窗口支持文件拖入
  8. 如何复制对冲基金的成功?
  9. Three.js – Building a Cube with different mater...
  10. Ant—如何Windows操作系统中搭建Apache Ant环境
  11. linux夸分区建立软链接,Linux硬链接和软链接
  12. 通达OA 太牛了!工作流表单设计中级联菜单原来可以这样实现(图文)
  13. 基于labview的周立功usbcan盒的研究
  14. 一文读懂大比例尺地形图测绘
  15. 闭环整流电路matlab仿真,分享:基于双闭环的单相整流器原理简介及仿真验证
  16. 快乐牛牛终极板creator1.82 shader 挫牌代码
  17. 产品生命周期,鸿沟理论和CNCF项目孵化
  18. 西门子医疗与全景医学共推基层医疗远程影像诊断全面应用;汤臣倍健捐赠670万元营养品与合作伙伴共同支援西安、珠海抗疫 | 医药健闻...
  19. Python开发系列课程(11) - 面向对象编程进阶
  20. OpenCV作业及近阶段学习总结

热门文章

  1. cmd提示 'node' 不是内部或外部命令,也不是可运行的程序
  2. windows下phpStudy搭建WNMP虚拟机域名
  3. 鱼骨图和甘特图图表合集PPT模板-优页文档
  4. 逻辑函数的代数化简法
  5. 【视频编码学习】——变换的理解
  6. C# 字符串不足位数补零
  7. 用户画像,知乎Live总结
  8. 背景提取——码书法(codebook),一些总结和改进
  9. R产生指定协方差阵的正态随机向量
  10. 计算机硬件检测维修内容,计算机硬件检测维修赛项标准规范.doc