matlab中SVM回归问题

matlab中SVM回归问题,第1张

首先需要MATLAB SVM Toolbox,将其中的文件解压并命名为svm。

将文件拷到E:\matlab\toolbox。

打开matlab点击set path---->add folder ,然后把工具箱文祥氏件夹和碰添加进去就可以了。

路径加进去后在file→Preferences→谨棚散General的Toolbox Path Caching里点击update Toolbox Path Cache更新一下。

最后在matlab的命令栏中输入which svcoutput可以查看路径E:\matlab\toolbox\svm\svcoutput.m就可以了。

en . -s 3是回归模型:

-s svm_type : set type of SVM (default 0)

0 -- C-SVC

1 -- nu-SVC

2 -- one-class SVM

3 -- epsilon-SVR

4 -- nu-SVR

==============

libsvm_options:

-s svm_type : set type of SVM (default 0)

0 -- C-SVC

1 -- nu-SVC

2 -- one-class SVM

3 -- epsilon-SVR

4 -- nu-SVR

-t kernel_type : set type of kernel function (default 2)

0 -- linear: u'*v

1 -- polynomial: (gamma*u'*v + coef0)^degree

2 -- radial basis function: exp(-gamma*|u-v|^2)

3 -- sigmoid: tanh(gamma*u'*v + coef0)

4 -- precomputed kernel (kernel values in training_instance_matrix)

-d degree : set degree in kernel function (default 3)

-g gamma : set gamma in kernel function (default 1/k)

-r coef0 : set coef0 in kernel function (default 0)

-c cost : set the parameter C of C-SVC, epsilon-SVR, and nu-SVR (default 1)

-n nu : set the parameter nu of nu-SVC, one-class SVM, and nu-SVR (default 0.5)

-p epsilon : set the epsilon in loss function of epsilon-SVR (default 0.1)

-m cachesize : set cache memory size in MB (default 100)

-e epsilon : set tolerance of termination criterion (default 0.001)

-h shrinking: whether to use the shrinking heuristics, 0 or 1 (default 1)

-b probability_estimates: whether to train a SVC or SVR model for probability estimates, 0 or 1 (default 0)

-wi weight: set the parameter C of class i to weight*C, for C-SVC (default 1)

-v n: n-fold cross validation mode

这是一个多元支持向量机回归的模型,以下是一个参考的实现代码:

import numpy as npimport matplotlib.pyplot as pltfrom sklearn import svmfrom sklearn.metrics import r2_score

# 模拟数据

np.random.seed(0)

X = np.sort(5 * np.random.rand(80, 1), axis=0)

y = np.sin(X).ravel()

y[::5] += 3 * (0.5 - np.random.rand(16))

# 分割数据

train_X = X[:60]

train_y = y[:60]

test_X = X[60:]

test_y = y[60:]

# 模型训练

model = svm.SVR(kernel='rbf', C=1e3, gamma=0.1)

model.fit(train_X, train_y)

# 预测结果

pred_y = model.predict(test_X)# 计算R2r2 = r2_score(test_y, pred_y)

# 对比图

plt.scatter(test_X, test_y, color='darkorange', label='data'指敏)

plt.plot(test_X, pred_y, color='navy', lw=2, label='SVR model')

plt.title('R2={:.2f}'.format(r2))

plt.legend()

plt.show()

上面的代码将数据分为训练数据和测试数据,使用SVR模型对训练唯配枝数据进行训练,然后对测试数据进行预测。计算预测结果与真实值的R2,最后卖逗将结果画出对比图,以评估模型的效果。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12565630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存