【机器学习】支持向量机实战项目:水果分类器优化
支持向量机实战项目:水果分类器优化
- 利用支持向量机水果分类的完善
手动反爬虫: 原博地址 https://blog.csdn.net/lys_828/article/details/122648245
知识梳理不易,请尊重劳动成果,文章仅发布在CSDN网站上,在其他网站看到该博文均属于未经作者授权的恶意爬取信息
传统分类算法大部分是二值分类算法:系统随机产生一个超平面并移动它,直到训练集中属于不同类别的样本点正好位于该超平面的两侧。显然,这种机理能够解决线性分类问题,但不能够保证产生的超平面是最优的。
支持向量机(Support Vector Machine, SVM)基本思想:建立的最优分类超平面能够在保证分类精度的同时,使超平面两侧的空白区域最大化,从而实现对线性可分问题的最优分类。
除了解决线性分类的问题,也可以借助核函数实现线性不可分的问题。具体思路:将不可分样本映射到高维空间中,让样本点在高维空间线性可分。举个例子如下。
常见的核函数有:
(1)线性核函数
k(xi,xj)=xiTxjk(x_i,x_j)=x^T_ix_j k(xi,xj)=xiTxj
(2)多项式核函数
k(xi,xj)=(xiTxj)dk(x_i,x_j)=(x^T_ix_j)^d k(xi,xj)=(xiTxj)d
(3)高斯核函数
k(xi,xj)=exp(−∣∣xi−xj∣∣22δ2)k(x_i,x_j)=exp(-\frac{||x_i-x_j||^2}{2\delta^2}) k(xi,xj)=exp(−2δ2∣∣xi−xj∣∣2)
利用支持向量机水果分类的完善
第一步仍是加载模块和导入数据,代码及输出结果如下。
由于数据EDA之前已经做过了,这里可以直接进行特征数据和标签数据、训练集和测试集的划分。
进一步导入支持向量机模块和评估函数,代码如下。
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score
clf=SVC(kernel='poly',degree=2)
clf.fit(X_train,y_train)
y_pred=clf.predict(X_test)
ac=accuracy_score(y_test,y_pred)
ac
输出结果如下。采用的是二次多项式的核函数进行数据分类,模型最终得分仅有0.33。
更换高斯核函数(RBF),代码及输出结果如下。
然后更换为线性核函数,代码及输出结果如下。
经过上方三个模型的对比,如果直接传入四个特征字段,经过线性核函数下的支持向量机的分类效果最佳。
如果考虑一下数据量纲的影响,进行标准化处理,看看是否会对模型的最终得分有影响。
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42)
scaler.fit(x_train)
x_train2 = scaler.transform(x_train)
x_test2 = scaler.transform(x_test)
输出结果如下。
然后将标准化的数据依次应用在三个模型上,代码及输出结果如下。实际输出结果显示,多项式核函数模型的分类效果有所提升,但是高斯核函数模型以及线性核函数模型得分都降低。
可以尝试分析一下原因,特征字段中可能存在一些毫无关联的字段,在建模中就属于干扰项,通过关系矩阵查看一下特征字段与标签字段的关联性,代码及输出结果如下。
输出中可以发现水果的质量和标签信息的关联性指数只有0.03,已经是极度不相关,可以尝试去除该字段后,再进行模型的创建。
X = fruits[[ 'width', 'height','color_score']]
y = fruits['fruit_label']
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
输出结果如下。
将数据依次应用在各个模型上,代码及输出结果如下。这时候使用多项式核函数的模型得分结果最高了,而使用线性核函数的模型得分最低。(也可以尝试把数据标准化后跑一下模型)
如果有兴趣,也可以再剔除一个字段,保留两个字段作为特征字段后进行建模看看模型得分。最后需要说明,由于模型都是直接使用,没有进行参数的调整,运行结果可能与当前运行结果不一致,可以指定random_state参数保证每次输出结果一致。
【机器学习】支持向量机实战项目:水果分类器优化相关推荐
- 机器学习算法实战项目—支持向量机(2)—完整版的SMO算法
2.完整版的SMO算法 在几百个点组成的小规模数据集上,简化版SMO算法的运行是没有什么问题的,但是在更大的数据集上的运行速度就会变慢. 刚才已经讨论了简化版SMO算法,下面我们就讨论完整版的Plat ...
- 机器学习--支持向量机实战(二)简易SMO算法实现
该简易算法其实完成的任务很简单,就是违反KKT条件的alpha进行符合KKT条件,然后通过不在边界的点进行迭代,然后使其alpha稳定下来下面的代码基本每一句都进行了详细的解释,具体看代码,但是建议没 ...
- 机器学习--支持向量机实战(四)核函数实现
这节和上一节很像,不同的是,上一篇的是通过支持向量和待分类数据內积进行分类的,只是这里不同的是,在计算內积时使用核函数进行代替,这里参考的是机器学习实战中的核函数,如果前面理解的比较深入,读代码还是很 ...
- 机器学习--支持向量机实战(三)完整版SMO算法实现
完整版和简化版的smo不通之处在于alpha的选择方式上,alpha的更改和代数运算和简化版本,完整版的alpha的选择方式采用了启发式进行选择,前面文章已经详解了,这里再简单的叙述一下: Platt ...
- 【机器学习】KNN算法实战项目二:水果分类
KNN算法实战项目二:水果分类 2 KNN实现水果分类 2.1 模块导入与数据加载 2.2 数据EDA 2.3 模型创建与应用 2.4 绘制决策边界 手动反爬虫: 原博地址 https://blog. ...
- Python机器学习全流程项目实战精讲(2018版)
Python机器学习全流程项目实战精讲(2018版) 网盘地址:https://pan.baidu.com/s/16SSVq74YC07M0dW1iDekPg 提取码: vu7r 备用地址(腾讯微云) ...
- 实战录 | 浅谈前端项目构建与优化
<实战录>导语 云端卫士的新栏目<实战录>将会定期分享一些我们的工程师伙伴们在产品研发的过程中总结的实践经验,希望对于热爱技术且关注安全领域的受众有所裨益.本期分享人为云端卫士 ...
- 吴恩达机器学习(二十三)支持向量机、大间距分类器
文章目录 1.支持向量机 2.大间距分类器 1.支持向量机 2.大间距分类器 对于支持向量机的代价函数,如果C非常非常大,那么当最小化优化目标的时候,我们希望找到一项使得第一项为0: 我们可以这样 ...
- 机器学习实战项目-拉勾网
学习目标: 通过实战项目进行机器学习(一) 学习步骤: 1.对前程无忧网进行数据爬去 2.对所爬去的数据进行数据清洗 3.对数据进行可视化 4.进行特征工程 5.进行建模 – 学习内容: 一.利用se ...
最新文章
- EasyUI中datagrid的行编辑模式中,找到特定的Editor,并为其添加事件
- DLL回调EXE里的函数
- SAP Netweaver EACTT介绍
- tomcat安装与项目部署
- 在WebGL场景中进行棋盘操作的实验
- hadoop之文件管理基本操作
- three.js script vertex和fragment在react中使用/纯js写法
- 手机屏幕厂家信息软件_警惕假个税手机软件蹭热点,千万别被窃取私人信息
- 无法运行的愿意_分享减肥食谱一周瘦10斤,你愿意尝试吗?
- tensorflow--forword(前向传播)
- springcloud多租户实现原理-Saas多租户实现-以及几种方案_设计思路---springcloud工作笔记108
- mysql高级操作_MySQL数据库的高级操作
- c 调用python clion_CLion 2018.1.3 功能超级强大的跨平台 C 开发工具
- DesignPattern_Java:设计模式分类和设计原则
- qtableiwdget优化之再优化(大批量数据加载不卡顿)
- 机智云智慧烟感物联网解决方案
- java ftpclient prompt,一个JAVA FTP客户端制作的收获
- 数实融合激变时刻,与长期主义同行
- fabric cita 调研对比
- QT 幸运大转盘动画