支持向量回归机代码示例(网格搜索最优参数)

import numpy as np
from sklearn.svm import SVR
#网格搜索法 寻找最优参数 
C_Arr=[1,10,100,200,400,600,800,1000]
gamma=_Arr=[0.001,0.01,0.1]
Pre_MAPE=100

for C_out in C_Arr:
    for gamma_out in gamma_Arr:
    #Training
    svr_rbf=SVR(kernel='rbf',C=C_out,gamma=gamma_out)
    svr_rbf.fit(X_train,Y_train)
    Y_pred = svr_rbf.predict(X_valid)
    Y_real_pred =ldmin+Y_pred*(ldmax-ldmin)
    Y_real_valid = ldmin + Y_valid*(ldmax-ldmin)
    Y_diff=Y_real_pred-Y_real_valid 
    relat_errors =Y_diff/Y_real_valid
    abs_relat_errors = np.fabs(relat_errors)
    error_sum =np.sum(abs_relat_errors) 
    valid_num =len(abs_relat_errors) 
    MAPE=error_sum/valid_num 
    if MAPE <Pre_MAPE:
        Pre_MAPE=MAPE 
        Opt_C=C_out
        Opt_gamma=gamma_out
##测试 
svr_rbf=SVR(kernel='rbf',C=Opt_C,gamma=Opt_gamma) 
svr_rbf.fit(X_train,Y_train)
Y_pred =svr_rbf.predict(X_test)
Y_real_pred =ldmin+Y_pred*(ldmax-ldmin)



支持向量(Support Vector Machine,SVM)是一种常用的器学习算法,用于分类和回归问题。在Python中,可以使用scikit-learn库来实现支持向量,并进行参数优化。 支持向量参数优化包括以下几个方面: 1. 核函数选择:SVM可以使用不同的核函数来进行非线性分类或回归。常用的核函数有线性核函数、多项式核函数和高斯核函数等。在scikit-learn中,可以通过设置`kernel`参数来选择不同的核函数。 2. 正则化参数C:正则化参数C控制了模型的复杂度和容错能力。较小的C值会使模型更加容忍错误分类,可能导致过拟合;较大的C值会使模型更加关注正确分类,可能导致欠拟合。在scikit-learn中,可以通过设置`C`参数来调整正则化参数。 3. 松弛变量参数:松弛变量参数控制了支持向量对于误分类样本的容忍程度。较小的松弛变量参数会使模型更加关注正确分类,可能导致较少的支持向量;较大的松弛变量参数会使模型更加容忍错误分类,可能导致较多的支持向量。在scikit-learn中,可以通过设置`tol`参数来调整松弛变量参数。 4. 核函数参数:如果选择了非线性核函数,还需要设置相应的核函数参数。例如,多项式核函数需要设置多项式的阶数,高斯核函数需要设置高斯核的宽度等。在scikit-learn中,可以通过设置`degree`参数(对应多项式核函数的阶数)或`gamma`参数(对应高斯核函数的宽度)来调整核函数参数。 下面是一个示例代码,展示了如何使用scikit-learn库中的SVM类进行支持向量参数优化: ```python from sklearn import svm from sklearn.model_selection import GridSearchCV # 准备数据 X = [[0, 0], [1, 1]] y = [0, 1] # 定义参数网格 param_grid = {'kernel': ['linear', 'poly', 'rbf'], 'C': [0.1, 1, 10], 'degree': [2, 3, 4], 'gamma': [0.1, 1, 10]} # 创建SVM模型 svm_model = svm.SVC() # 使用网格搜索进行参数优化 grid_search = GridSearchCV(svm_model, param_grid) # 拟合数据 grid_search.fit(X, y) # 输出最优参数 print("最优参数:", grid_search.best_params_) ``` 在上述代码中,我们首先准备了训练数据X和对应的标签y。然后定义了一个参数网格,包含了不同的核函数、正则化参数C、多项式核函数的阶数和高斯核函数的宽度。接下来,创建了一个SVM模型和一个网格搜索对象,并使用`fit`方法拟合数据。最后,通过`best_params_`属性输出了最优参数组合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值