zoukankan      html  css  js  c++  java
  • 【笔记】SVM思想解决回归问题

    使用svm思想解决回归问题

    使用svm思想解决是如何解决回归问题,其中回归问题的本质就是找一条线,能够最好的拟合数据点

    怎么定义拟合就是回归算法的关键,线性回归算法就是让预测的直线的MSE的值最小,对于SVM来说,拟合的定义是指定一个margin值,在这个margin范围里面,包含的数据点越多越好,包含的越多就代表这个范围能比较好的表达样本数据点,这种情况下取中间的直线作为真正的回归结果,用其来预测其他点的相应的值

    在训练的时候是要对margin的范围进行一个指定,这就要引入一个新的超参数,即上下两根直线到中间的直线的垂直距离

    这个思路和前面SVM解决分类问题的思路是有点相反的意思,前面是越少越好,这里是越多越好

    具体操作实现

    (在notebook中)

    加载好必要的包,使用波士顿房价数据集,进行分割数据集的操作,随机种子为666,

      import numpy as np
      import matplotlib.pyplot as plt
      from sklearn import datasets
    
      boston = datasets.load_boston()
      X = boston.data
      y = boston.target
    
      from sklearn.model_selection import train_test_split
    
      X_train,X_test,y_train,y_test =       train_test_split(X,y,random_state=666)
    

    sklearn中使用SVR和LinearSVR,这两个都是解决回归问题的类,构造的时候的参数设置与先前(链接)差距不大,使用LinearSVR要传入参数epsilon,然后调用函数实例化并fit操作,最后计算出测试数据集的准确度

      from sklearn.pipeline import Pipeline
      from sklearn.svm import SVR
      from sklearn.preprocessing import StandardScaler
      from sklearn.svm import LinearSVR
    
      def StandardLinearSVR(epsilon=0.1):
          return Pipeline([
              ("std_scaler",StandardScaler()),
              ("linearSVR",LinearSVR(epsilon=epsilon))
          ])
    
      svr = StandardLinearSVR()
      svr.fit(X_train,y_train)
    
      svr.score(X_test,y_test)
    

    结果如下(不能只能一次得到结果)

    以上就是简单的对于SVM解决回归问题的操作

  • 相关阅读:
    Oracle 各种查询语句
    Win7下Eclipse中文字体太小
    ASP.NET MVC(Razor)上运用UEditor和xhEditor编辑器检测到有潜在危险的 Request.Form的真正解决办法
    Oracle 分页
    限制IIS访问流量提升IIS性能
    pl\sql工具导出表结构、序列和触发器方法
    JS 中面向对象的5种写法
    去除Windows 2003的登录CTRL+ALT+DEL
    List绑定时无法进行增删查改的解决办法
    .net工具
  • 原文地址:https://www.cnblogs.com/jokingremarks/p/14337260.html
Copyright © 2011-2022 走看看