基于SVM-支持向量机解决波士顿房价预测回归问题

简介: 基于SVM-支持向量机解决波士顿房价预测回归问题

认识SVM——支持向量机


什么是支持向量机


支持向量机(SVM),Supported Vector Machine,基于线性划 分,输出一个最优化的 分隔超平面,该超平面不但能将两类正确分开,且使分类间隔 (margin)最大



所有训练数据点距离最优分类超平面的距离都要大于支持向量距 离此分类超平面的距离

支持向量点到最优分类超平面距离越大越好

注意: SVM的终极目标是求出一个最优的线性分类超平面


SVM的核函数


       当在低维空间中,不能对样本线性可分时,将低维空间中的点 映射到高维空间中,使 它们成为线性可分的,再使用线性划分的原理来判断分类边界。 这里有个问题:如果直接采用这种技术在高维空间进行分类或 回归,可能在高维特征 空间运算时出现"维数灾难"!采用核函数技术(kernel trick)可以有效 地解决这样的问题 直接在低维空间用核函数,其本质是用低维空间中的更复杂的 运算代替高维空间中的普 通内积。


常用的核函数


linear:线性核函数 当训练数据线性可分时,一般用线性核函数,直接实现可分

poly:多项式核函数

rbf:径向基核函数/高斯核函数(Radial Basis Function Kernel) gamma值越小,模型越倾向于欠拟合 gamma值越大,模型越倾向于过拟合

sigmod:sigmod核函数

SVM的"硬间隔"与"软间隔"


硬间隔


当支持向量机(SVM)要求所有样本都必须划分正确,这称为 “硬间隔”(hard margin)。


软间隔


到目前为止,我们一直假定存在一个超平面能将不同类的样本 完全划分开。然而,在现 实任务中往往很难确定合适的核函数使得训练样本线性可分(即使 找到了,也很有可能 是在训练样本上由于过拟合所造成的) 缓解该问题的一个办法是允许支持向量机在一些样本上出错, 这称为"软间隔"(soft margin)。



软间隔支持向量机的数学表达式为(L1正则):



或者(L2正则)



注意: 正则项前面的常数C,C越大说明相应的容错空间越小,若C 取正无穷,则"逼迫"着每个ζ(也称为“松弛变量”)都必须等于 0,此时的Soft Margin SVM就变成了Hard Margin SVM.



实战——SVM解决房价预测回归问题


SVM解决回归问题的关键思想


SVM解决回归问题的时候,期望margin里的样本点越多越好。



sklearn中使用SVM解决回归问题,使用sklearn.svm.SVR(可以传 入不同的核函数)

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
# 加载数据集
boston = datasets.load_boston()  # 加载波士顿房子数据集
X = boston.data  # 样本特征
y = boston.target  # 样本标签(房价)
# 拆分数据集
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=666)
# 使用SVR回归
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import Pipeline
def SVRCode():
    return Pipeline([
        ("std",StandardScaler()),   # 特征标准化
        ("svr",SVR(kernel="rbf",C=15))  # SVM解决回归问题
    ])
pipe = SVRCode()
pipe.fit(X_train,y_train)   # 按照Pipeline封装的操作顺序对训练集处理
pipe.score(X_test,y_test)   # 测试集上进行回归效果评价

目录
相关文章
|
机器学习/深度学习 Web App开发 算法
ML之RF:随机森林RF算法简介、应用、经典案例之详细攻略
随机森林指的是利用多棵决策树对样本进行训练并预测的一种分类器。它包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。随机森林是一种灵活且易于使用的机器学习算法,即便没有超参数调优,也可以在大多数情况下得到很好的结果。随机森林也是最常用的算法之一,因为它很简易,既可用于分类也能用于回归。
ML之RF:随机森林RF算法简介、应用、经典案例之详细攻略
|
计算机视觉 Python
OpenCV多模板匹配讲解与匹配汽车实战(附Python源码)
OpenCV多模板匹配讲解与匹配汽车实战(附Python源码)
833 0
OpenCV多模板匹配讲解与匹配汽车实战(附Python源码)
|
缓存 网络协议 移动开发
slowhttptest慢攻击工具介绍
slowhttptest介绍 Slowhttptest是依赖HTTP协议的慢速攻击DoS攻击工具,设计的基本原理是服务器在请求完全接收后才会进行处理,如果客户端的发送速度缓慢或者发送不完整,服务端为其保留连接资源池占用,大量此类请求并发将导致DoS。
2520 0
|
监控 网络协议 Java
I/O多路复用【Linux/网络】(C++实现select、poll和epoll服务器)(上)
I/O多路复用【Linux/网络】(C++实现select、poll和epoll服务器)
753 0
|
NoSQL Java Redis
redis连接池参数
如果系统启动完马上就会有很多的请求过来,那么可以给redis连接池做预热,比如快速的创建一些redis连接,执行简单命令,类似ping(),快速的将连接池里的空闲连接提升到minldle的数量。
904 0
|
11月前
|
小程序 Java 知识图谱
Java 学习笔记 —— BMI & BMR 计算器
这是一个使用 Java 编写的 BMI 与 BMR 计算器小程序,可输入年龄、性别、身高和体重,计算身体质量指数(BMI)和基础代谢率(BMR),并输出健康评估结果。通过该项目,掌握了 Java 的输入处理、数据验证、条件判断、数学运算及格式化输出等基础知识,是 Java 初学者的理想练习项目。
|
存储 缓存 分布式计算
Hadoop配置文件core-site.xml
【7月更文挑战第17天】
1482 2
Hadoop配置文件core-site.xml
|
机器学习/深度学习 Python
【统计学习方法】线性可分支持向量机对鸢尾花(iris)数据集进行二分类
【统计学习方法】线性可分支持向量机对鸢尾花(iris)数据集进行二分类
907 0
【统计学习方法】线性可分支持向量机对鸢尾花(iris)数据集进行二分类
|
数据可视化 数据挖掘 BI
【数据分析与可视化】利用Python对学生成绩进行可视化分析实战(附源码)
【数据分析与可视化】利用Python对学生成绩进行可视化分析实战(附源码)
1058 3
|
存储 前端开发 异构计算
简单介绍Skia原理
Skia是一个跨平台的2D图形库。其底层原理包括:画布(Canvas),绘制引擎(Paint Engine),渲染管线(Render Pipeline),影子图片(Skia Pictures),路径(Path)
简单介绍Skia原理

热门文章

最新文章