`
huangyongxing310
  • 浏览: 490574 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

SVM 支持向量机

 
阅读更多
SVM 支持向量机(support vector machine)


https://blog.csdn.net/v_july_v/article/details/7624837



原理:就是找到一个超平面,将数据进行分类,


超平面
这是平面中的直线、空间中的平面之推广(n大于3才被称为“超”平面)

如果空间是3维的,那么它的超平面是二维平面,而如果空间是二维的,则其超平面是一维线。

sklearn提供了三种基于svm的分类方法:
sklearn.svm.NuSVC()
sklearn.svm.LinearSVC()
sklearn.svm.SVC()




# coding=utf-8

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn import datasets
from sklearn import tree
import numpy as np
from sklearn.externals.six import StringIO
import pydot

from sklearn import svm
from sklearn import datasets
from sklearn.model_selection import train_test_split as ts


def drawPoint(x,y,color,marker):
    plt.scatter(x, y, color=color, marker=marker)  #


#中心为0,四边为1
train = [[0, 0.0, 1], [0, 0.2, 1], [0, 0.5, 1], [0, 0.7, 1], [0, 0.9, 1],
         [0, 1.0, 1], [0, 1.2, 1], [0, 1.5, 1], [0, 1.7, 1], [0, 1.9, 1],
         [0, 2.0, 1], [0, 2.3, 1], [0, 2.5, 1], [0, 2.8, 1], [0, 3.0, 1],
         [0, 3.1, 1], [0, 3.5, 1], [0, 3.6, 1], [0, 3.7, 1], [0, 3.8, 1],
         # [0, 4.1, 1], [0, 4.3, 1], [0, 4.7, 1], [0, 4.8, 1], [0, 4.9, 1],

         [4, 0.0, 1], [4, 0.2, 1], [4, 0.5, 1], [4, 0.7, 1], [4, 0.9, 1],
         [4, 1.0, 1], [4, 1.2, 1], [4, 1.5, 1], [4, 1.7, 1], [4, 1.9, 1],
         [4, 2.0, 1], [4, 2.3, 1], [4, 2.5, 1], [4, 2.8, 1], [4, 3.0, 1],
         [4, 3.1, 1], [4, 3.5, 1], [4, 3.6, 1], [4, 3.7, 1], [4, 3.8, 1],
         # [4, 4.1, 1], [4, 4.3, 1], [4, 4.7, 1], [4, 4.8, 1], [4, 4.9, 1],

         [0.0, 4, 1], [0.2, 4, 1], [0.5, 4, 1], [0.7, 4, 1], [0.9, 4, 1],
         [1.0, 4, 1], [1.2, 4, 1], [1.5, 4, 1], [1.7, 4, 1], [1.9, 4, 1],
         [2.0, 4, 1], [2.3, 4, 1], [2.5, 4, 1], [2.8, 4, 1], [3.0, 4, 1],
         [3.1, 4, 1], [3.5, 4, 1], [3.6, 4, 1], [3.7, 4, 1], [3.8, 4, 1],
         # [4.1, 4, 1], [4.3, 4, 1], [4.7, 4, 1], [4.8, 4, 1], [4.9, 4, 1],

         [0.0, 0, 1], [0.2, 0, 1], [0.5, 0, 1], [0.7, 0, 1], [0.9, 0, 1],
         [1.0, 0, 1], [1.2, 0, 1], [1.5, 0, 1], [1.7, 0, 1], [1.9, 0, 1],
         [2.0, 0, 1], [2.3, 0, 1], [2.5, 0, 1], [2.8, 0, 1], [3.0, 0, 1],
         [3.1, 0, 1], [3.5, 0, 1], [3.6, 0, 1], [3.7, 0, 1], [3.8, 0, 1],
         # [4.1, 0, 1], [4.3, 0, 1], [4.7, 0, 1], [4.8, 0, 1], [4.9, 0, 1],

         [2, 1.0, 0], [2, 1.2, 0], [2, 1.5, 0], [2, 1.7, 0], [2, 1.9, 0],
         [2, 2.1, 0], [2, 2.3, 0], [2, 2.5, 0], [2, 2.7, 0], [2, 2.9, 0],
         [2.5, 1.0, 0], [2.5, 1.2, 0], [2.5, 1.5, 0], [2.5, 1.7, 0], [2.5, 1.9, 0],
         [2.5, 2.1, 0], [2.5, 2.3, 0], [2.5, 2.5, 0], [2.5, 2.7, 0], [2.5, 2.9, 0],

         [3, 1.0, 0], [3, 1.2, 0], [3, 1.5, 0], [3, 1.7, 0], [3, 1.9, 0],
         [3, 2.0, 0], [3, 2.2, 0], [3, 2.5, 0], [3, 2.7, 0], [3, 2.9, 0],
         ]

trainData = np.array(train)
# print(trainData)

# trainX = trainData[:, 0]
# trainY = trainData[:, 1]
# trainZ = trainData[:, 2]

trainX = trainData[:, 0:2]
trainY = trainData[:, 2]

# print(trainX)
# print(trainY)

#调用SVC()
clf = svm.SVC()

clf.fit(trainX,trainY)

predict_y = clf.predict([[2.4,2.4],[2.3,1.3],[0.2,0.5],[3.7,3.5],[7,7]])
print(predict_y)


#画图
drawX1 = np.linspace(0,4,100)
drawY1 = np.linspace(0,4,100)

drawX2,drawY2 =  np.meshgrid(drawX1,drawY1)

drawX3 = np.ravel(drawX2)
drawY3 = np.ravel(drawY2)

draw4 = np.c_[drawX3,drawY3]

predict_drawZ1 = clf.predict(draw4)
print(predict_drawZ1)


drawX3_0 = drawX3[np.where(predict_drawZ1==0)]
drawY3_0 = drawY3[np.where(predict_drawZ1==0)]

drawX3_1 = drawX3[np.where(predict_drawZ1==1)]
drawY3_1 = drawY3[np.where(predict_drawZ1==1)]

drawPoint(drawX3_0, drawY3_0, 'r', '+')
drawPoint(drawX3_1, drawY3_1, 'g', '+')

#样本点
trainX2 = trainX[:,0]
trainY2 = trainX[:,1]
trainZ2 = trainData[:, 2]


trainX2_0 = trainX2[np.where(trainZ2==0)]
trainY2_0 = trainY2[np.where(trainZ2==0)]

trainX2_1 = trainX2[np.where(trainZ2==1)]
trainY2_1 = trainY2[np.where(trainZ2==1)]

drawPoint(trainX2_0, trainY2_0, 'b', 'o')
drawPoint(trainX2_1, trainY2_1, 'm', 'v')


plt.show()



























  • 大小: 19.1 KB
分享到:
评论

相关推荐

    代码 基于SVM支持向量机算法的降水量预测模型代码

    代码 基于SVM支持向量机算法的降水量预测模型代码代码 基于SVM支持向量机算法的降水量预测模型代码代码 基于SVM支持向量机算法的降水量预测模型代码代码 基于SVM支持向量机算法的降水量预测模型代码代码 基于SVM支持...

    SVM支持向量机代码解释

    SVM支持向量机,预测分类 回归,支持向量机(Support Vector Machine,SVM)是Corinna Cortes和Vapnik等于1995年首先提出的,它在解决小样本、非线性及高维模式识别中表现出许多特有的优势,并能够推广应用到函数拟合...

    SVM支持向量机模型的matlab源程序

    SVM支持向量机模型的matlab源程序 SVM支持向量机模型的matlab源程序 SVM支持向量机模型的matlab源程序 SVM支持向量机模型的matlab源程序 SVM支持向量机模型的matlab源程序 SVM支持向量机模型的matlab源程序 ...

    基于python的SVM支持向量机算法设计与实现

    总结,Python中的SVM支持向量机算法设计与实现涉及了从理解SVM基本理论到运用Scikit-learn库构建模型的全过程。通过合理的参数设置和优化,SVM能够在各种复杂的分类问题中展现出高效性能,成为机器学习和人工智能...

    使用 python手动实现了SVM支持向量机 核函数 软间隔

    使用python手动实现了SVM支持向量机,包括其中二次规划的求解(调用cvxopt包),实现了软间隔及核技术,以及对数据集及分类效果的可视化!建议配合我的SVM PPT一起学习SVM 不是直接调用sklearn的SVM!!

    svm支持向量机_MATLAB向量机_

    在提供的压缩包文件"svm支持向量机"中,很可能包含了MATLAB代码示例和用于训练的样例数据。通过查看这些文件,你可以更深入地了解如何在实际操作中实现和支持向量机的训练。同时,这些代码也可以帮助你理解和掌握SVM...

    基于GAN生成对抗网络结合SVM支持向量机的数据生成(Matlab完整程序和数据)

    基于GAN生成对抗网络结合SVM支持向量机的数据生成(Matlab完整程序和数据) 基于GAN生成对抗网络结合SVM支持向量机的数据生成(Matlab完整程序和数据) 基于GAN生成对抗网络结合SVM支持向量机的数据生成(Matlab完整...

    基于SVM支持向量机算法的降水量预测模型代码_SVM_SVM预测_blues1l_基于SVM支持向量机对降水量的预测_降水、_源

    支持向量机(Support Vector Machine,简称SVM)是一种广泛应用的监督学习算法,尤其在分类和回归任务中表现出色。在本项目中,SVM被用于建立一个降水量预测模型,通过对历史数据的学习,预测未来的降水量。SVM的...

    支持向量机matlab实例及理论.zip_LibSVM_SVM支持向量机_matlab自带svm_svm matlab_svm

    支持向量机matlab实例及理论,详细介绍了svm理论以及MATLAB自带的SVM分类用法

    SVM支持向量机故障诊断/分类预测(Matlab完整源码)

    SVM支持向量机故障诊断/分类预测(Matlab完整源码) 数据为西储大学轴承诊断数据经过特征提取后的数据。运行环境Matlab2023 SVM支持向量机故障诊断/分类预测(Matlab完整源码) 数据为西储大学轴承诊断数据经过特征...

    Svm支持向量机详细内容

    SVM学习问题可以表示为凸优化问题,因此可以利用已知的有效算法发现目标函数的全局最小值。而其他分类方法(如基于规则的分类器和人工神经网络)都采用一种基于贪心学习的策略...SVM支持向量机,好东西啊,大家好好学习

    java实现SVM支持向量机算法

    总的来说,使用Java实现SVM支持向量机算法涉及多个步骤,包括理解SVM的数学基础,实现优化算法,处理数据,选择和实现核函数,以及参数调优和模型评估。"svm-optimization-master"这个项目很可能是对SVM优化部分的...

    【图像识别】基于svm支持向量机算法表情识别matlab源码.md

    【图像识别】基于svm支持向量机算法表情识别matlab源码.md

    svm支持向量机

    总之,SVM支持向量机是一种强大的机器学习算法,尤其在处理小样本和高维数据时有很好的表现。通过MATLAB,我们可以直观地理解和实践SVM的原理,实现有效的分类器设计。对于模式识别任务,SVM能够提供优秀的分类效果...

    SVM 支持向量机 PPT

    "SVM支持向量机PPT" 支持向量机(Support Vector Machines,SVM)是一种基于统计学理论的通用学习方法,由 Vapnik 等人提出。它建立在统计学理论的 VC 维理论和结构风险最小原理基础上,能较好地解决小样本、非线性...

    MATLAB实现SVM支持向量机多输入回归预测(完整源码和数据)

    MATLAB实现SVM支持向量机多输入回归预测(完整源码和数据) 数据为多输入回归数据,输入7个特征,输出1个变量,程序乱码是由于版本不一致导致,可以用记事本打开复制到你的文件。 运行环境MATLAB2018b及以上。

    代码 基于SVM支持向量机算法的降水量预测模型代码.rar

    支持向量机(Support Vector Machine,简称SVM)是一种强大的监督学习算法,广泛应用于分类和回归任务,包括降水量预测。在这个压缩包中,我们很可能找到了一个使用SVM实现的降雨量预测模型的源代码。SVM的核心思想...

    SVM支持向量机分类鸢尾花数据集iris及代码

    在这个“SVM支持向量机分类鸢尾花数据集iris及代码”中,我们将深入探讨如何利用SVM对鸢尾花数据集进行分类,并分析其中涉及的关键概念和技术。 首先,鸢尾花数据集(Iris dataset)是机器学习领域的一个经典多类...

    SVM and dataset_SVM支持向量机minst数据集预测_svm向量机_

    在"标题"中提到的"SVM支持向量机minst数据集预测",指的是使用SVM算法对MNIST数据集进行手写数字识别的训练和预测任务。 MNIST数据集是机器学习领域的一个经典数据集,包含了60,000个训练样本和10,000个测试样本,...

Global site tag (gtag.js) - Google Analytics