记录一个SVR学习
1、为什么使用jupter来做数据预测?而不是传统pycharm编辑器
1、Jupyter Notebook 通过anaconda统一管理环境,可以运行python、R、Sql等数据分析常用语言。
2、做到交互式运行,可以逐步运行代码块,实时查看结果,便于调试和优化。
3、可以在 Notebook 中添加 Markdown 文本,记录分析过程和结论。
2、数据预测的思路分析
2.1、数据读取和数据预处理
首先对原始数据进行数据预处理是做一个数据预测的核心第一步。
在第一步我们做了数据的原始读取,并且将部分类名做了规范统一命名的处理。其次还删除掉了一些无效列。
第二步分析原始数据是否存在基本的数据问题,例如数据残缺、数据异常。
2.2 选取模型,按照要求选择SVR模型
支持向量回归(SVR, Support Vector Regression)是一种基于支持向量机(SVM, Support Vector Machine)的回归模型。SVR 通过找到一个平滑的回归函数,能够在一定的误差范围内对数据进行拟合,同时保持模型的简单性,避免过拟合。
选择原因如下:
1、适用于小样本高维数据集
2、通过 ε 和 C 平衡模型的复杂度和预测精度,避免过拟合或欠拟合
但是该模型需要对噪声数据敏感,可能需要在数据预处理中注意清洗和降噪(在上一步已经做了基本预处理)
接下来最重要就是对SVR 的关键参数进行调参:
选择径向基函数(RBF)作为核函数,用于映射非线性关系。(根据提供的数据本身就是分线性关系)
惩罚系数C,控制模型对训练误差的容忍程度。
核系数gamma,决定 RBF 核的“影响范围”。
epsilon容忍误差范围,表示模型预测值与实际值允许的偏差。
通过调整 C、gamma 和 epsilon,构建了一个具有良好拟合能力的支持向量回归模型,用于处理非线性数据。
svr = SVR(kernel="rbf", C=10, gamma=0.063, epsilon=0.1)
并且将原始数据的分为80%做训练,20%做测试集。这里random_state=42是固定随机种子,保证每次运行代码时拆分结果一致。