SVM---sklearn实现多核

本文通过使用线性、高斯径向基(RBF)和多项式核的支持向量机(SVM)对随机生成的sin值样本进行拟合,展示了不同核函数下SVM的预测效果。通过图形对比,直观地说明了不同核函数的选择对模型复杂性和拟合能力的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import numpy as np
from sklearn.svm import SVR
import matplotlib.pyplot as plt
%# % matplotlib inline(再jupyter中实现可加上)
#自定义样本点rand,并且生成sin值
x = np.random.rand(40,1)*5
X_train = np.sort(x,axis = 0)
print(“X_train:%s”%X_train)

y_train = np.sin(X_train)
print(“y_train:%s”%y_train)

y_train[::5]+= np.random.randn(8,1)
print(“y_train:%s”%y_train)
plt.scatter(X_train,y_train)
plt.ylim(-2.5,2.5)

svr_linear = SVR(kernel=‘linear’)
svr_rbf = SVR(kernel=‘rbf’)#默认设置
svr_poly = SVR(kernel=‘poly’)

#数据的预测
%# x_test= np.arange(0,5,0.01).reshape((-1,1))
x_test= np.arange(0,5,0.01)[:,np.newaxis]
%# print(“X_train.shape:%s”%X_train.shape[1])
%# print(“y_train.shape:%s”%y_train.shape[1])
print(“x_test.shape:%s”%x_test.shape[0])
linear_y_ = svr_linear.fit(X_train,y_train).predict(x_test)
rbf_y_ = svr_rbf.fit(X_train,y_train).predict(x_test)
poly_y = svr_poly.fit(X_train,y_train).predict(x_test)

#绘制图形,观察三种支持向量机内核不同
plt.figure(figsize=(8,6))
plt.scatter(X_train,y_train)
plt.plot(x_test,linear_y_, ‘r+’,label=“linear”)
plt.plot(x_test,rbf_y_,‘cyan’,label = ‘rbf’)
plt.plot(x_test,poly_y,‘purple’,label=‘poly’)

plt.legend()

plt.show()

注:线性的linear可以画出分割线,但是高维的就没法画出分割面,所以一般SVM预测都是可以画出预测的线,分割线无法画出。那如何才能知道哪个核函数最好,这就需要测试之后才能知道。哪个测试出来的准确率高就用哪个
在这里插入图片描述

### 使用MKL-SVM算法进行网格搜索的实现与优化 #### 网格搜索的概念 网格搜索是一种用于超参数调优的技术,通过穷举不同组合来寻找最优配置。对于支持向量机(SVM),尤其是采用多核学习(MKL)框架的情况,网格搜索可以显著提升模型性能。 #### MKL-SVM简介 多核学习(Multiple Kernel Learning, MKL)[^2]允许SVM利用多个不同的核函数组合来进行分类或回归任务。这种方法不仅能够提高预测精度,还能增强模型解释力。具体来说,在给定一组基核的基础上,MKL试图找到最佳权重分配方案使得最终决策边界更加贴合数据分布特性。 #### 实现过程 要基于MKL-SVM执行有效的网格搜索,需考虑以下几个方面: 1. **定义候选参数空间** - 对于每个参与训练的基础核(例如RBF、线性等),设定其对应超参范围; - 设计合理的初始权值区间作为输入至MKL模块; 2. **构建评估指标体系** - 基于交叉验证机制计算各类评价标准(如准确率、F1-score); - 记录每次迭代后的得分情况以便后续分析比较; 3. **编写自动化脚本** ```python from sklearn.model_selection import GridSearchCV from mkl_svm import MKLSVC # Assume this is a custom or third-party library implementing MKL SVM param_grid = { 'kernel_weights': [[0.7, 0.3], [0.5, 0.5]], # Example of kernel weights combinations 'C': [1e-3, 1e-2, 1e-1], } clf = GridSearchCV(estimator=MKLSVC(), param_grid=param_grid, cv=5) # Assuming X_train and y_train are pre-defined training data sets. clf.fit(X_train, y_train) print(f'Best parameters found: {clf.best_params_}') ``` 4. **结果解析与应用** - 输出表现最好的那组设置及其相应的性能分数; - 将这些发现应用于实际问题解决过程中去改进现有解决方案。 #### 性能优化建议 为了使上述流程更高效地运行并获得更好的效果,可以从如下几个角度入手: - 并行化处理:充分利用现代计算机硬件资源加速遍历速度; - 自适应调整步长:动态改变探索粒度从而减少不必要的运算开销; - 利用先验知识缩小搜索域:借助领域专家经验指导合理选取起始点和终止条件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值