本文是个人学习笔记,该篇主要学习SVM算法概念,并应用sklearn.svm算法包解决Kaggle入门级Digit Recognizer。

  • SVM 简述

    • 经典SVM思想
    • SVM 线性不可分
    • SVM 多分类问题
  • Python 代码

SVM 简述

之前参考学习很多大小牛的总结,发现对SVM理论的阐述主要还是结合数学上的推导过程。这种方式必然是严谨并且如果完整验证也有助于更通透的理解SVM机制。但对于只想理解核心概念并侧重应用上来说,则内容会有些过于庞大。因此为了方便自己学习,本文简化对SVM机制的描述,只阐述核心概念而忽略数学推导。

经典SVM思想

简而言之,SVM的训练目标就是获得一个分割超平面, 而该平面是分类决策边界,平面两边分别代表两类。因此,经典SVM算法只适用于两类分类问题。
SVM确定超平面的方式是实现距离超平面最近的点到超平面的距离最大。

图示:

SVM 线性不可分

经典SVM的应用前提之一就是待分类点是线性可分的,但实际则更多存在线性不可分,如下图示。

图示:

为了解决线性不可分的情况,则需要引入核函数(Kernel),通过核函数可以将原始样本映射到更高维度上,从而实现在高维度上的线性可分,这样SVM就可以继续有效应用。

图示:

SVM 多分类问题

经典SVM只能处理简单的二分类问题,所以对样本需要进行多分类判断时,就要对经典SVM在方法上进行一些拓展。总体来说,有五种基本方式:
(1) One vs. Others
(2) One vs. One
(3) DAG
(4) 基于决策树
(5) 基于纠错输出编码
具体每种方法的理论和特点,请详参puqutogether的blog。

Python 代码

Python 的Sklearn包集成了SVM算法,我们这里用的NuSVC来处理Digit Recognizer的多分类问题,需要知道的是NuSVC处理多分类是基于One vs One的方法。详情请参自行查阅官方文档或puqutogether的blog。

import pandas as pd
import numpy as np
import time
from sklearn.svm import NuSVCdef data_load():# 利用pandas读取csv文件内容train_ttl=pd.read_csv('D:\Program files\JetBrains\digit recognizer\Raw data\\train.csv')train_label=pd.DataFrame(train_ttl['label'])train_data=pd.DataFrame(train_ttl.ix[:,1:])test_data=pd.read_csv('D:\Program files\JetBrains\digit recognizer\Raw data\\test.csv')# dataframe归整化test_data[test_data!=0]=1# train_data[train_data!=0]=1m, n = train_data.shape  # 这里似乎因为dataframe太大,用bool判断更改时总会异常跳出,所以选择循环更改,但慢for i in range(m):for j in range(n):if train_data.ix[i, j] != 0:train_data.ix[i, j] = 1return train_data,train_label,test_data#利用Python Sklearn包,进行test样本集分类判别
def svm_classify(traindata,trainlabel,testdata):svm_clf = NuSVC()#设置参数svm_clf.fit(traindata,trainlabel.values.ravel())#训练Train样本svm_result=svm_clf.predict(testdata)#预测Test样本return svm_resultif __name__=='__main__':start = time.clock()traindata,trainlabel,testdata=data_load()#加载raw datam,n=testdata.shaperesult_labels=svm_classify(traindata,trainlabel,testdata)#将结果转化成Dataframe结构result={}ImageId=np.arange(m)+1result['Label']=result_labelsresult_frame=pd.DataFrame(result,index=ImageId)#导出结果result_frame.to_csv('D:\Program files\JetBrains\digit recognizer\Raw data\\result_svm.csv')end = time.clock()print('总耗时:', (end - start)/60)

学习笔记——Kaggle_Digit Recognizer (SVM算法 Python实现)相关推荐

  1. 学习笔记——Kaggle_Digit Recognizer (KNN算法 Python实现)

    本文是个人学习笔记,该篇主要学习KNN算法理论和应用范围,并应用KNN算法解决Kaggle入门级Digit Recognizer,也是个人入坑ML和Kaggle的开端,希望能够有始有终. KNN算法 ...

  2. 学习笔记——Kaggle_Digit Recognizer (Random Forest算法 Python实现)

    本文是个人学习笔记,该篇主要学习随机森林算法概念,并应用sklearn.ensemble.RandomForestClassifier算法包解决Kaggle入门级Digit Recognizer. 随 ...

  3. 学习笔记——Kaggle_Digit Recognizer (朴素贝叶斯 Python实现)

    本文是个人学习笔记,该篇主要学习朴素贝叶斯算法概念,并应用sklearn.naive_bayes算法包解决Kaggle入门级Digit Recognizer. 贝叶斯定理 朴素贝叶斯 Python 代 ...

  4. 影像组学视频学习笔记(11)-支持向量机(SVM)(理论)、Li‘s have a solution and plan.

    本笔记来源于B站Up主: 有Li 的影像组学系列教学视频 本节(11)主要介绍: SVM支持向量机(理论) 支持向量机 (support vector machine, SVM) 号称是鲁棒性(rob ...

  5. Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.2. The Python language

    Scipy Lecture Notes学习笔记(一)Getting started with Python for science 1.2. The Python language 1.2.2. 基本 ...

  6. SVM学习笔记-对偶形式的SVM

    SVM学习笔记第二篇 SVM学习笔记-线性支撑向量机 SVM学习笔记-对偶形式的SVM SVM学习笔记-核函数与非线性SVM SVM学习笔记-软间隔SVM 0 - 回顾 上一篇笔记讲述了一个模型:线性 ...

  7. Apollo星火计划学习笔记——Apollo开放空间规划算法原理与实践

    文章目录 前言 1. 开放空间规划算法总体介绍 1.1 Task: OPEN_SPACE_ROI_DECIDER 1.2 Task: OPEN_SPACE_TRAJECTORY_PROVIDER 1. ...

  8. 【学习笔记】多项式相关算法

    [学习笔记]多项式相关算法 手动博客搬家: 本文发表于20181125 13:19:28, 原地址https://blog.csdn.net/suncongbo/article/details/844 ...

  9. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

最新文章

  1. 自定义注解妙用,一行代码搞定用户操作日志记录
  2. VS2017 按ctrl+f5执行程序窗口依然一闪而过的问题(图文)
  3. 根据需要通过代码的方式加载js文件
  4. 大话数据结构 17:图的深度优先遍历和广度优先遍历
  5. 牛客NOIP2021提高组OI赛前模拟赛第一场T3——与巨(数学)
  6. [DB]mysql 及sql server2005下实现分页效果的sql语句
  7. groupby多个字段性能_SQL 性能优化
  8. hibernate 教程 笔记
  9. SpringCloud:Gateway网关配置及使用
  10. 物联网技术-RFID
  11. windows10专业版镜像
  12. PAT-2021年春季乙级考试题解
  13. 论文阅读 | Analysis and comparison of MIMO radar waveforms MIMO雷达波形总结 (TDMA, CDMA, DDMA, FDMA等)
  14. Excel公式大全Excel公式大全-入门
  15. RGB颜色空间、色调、饱和度、亮度、HSV颜色空间详解
  16. 简单的把cad怎么转换成pdf格式呢?
  17. 初步认识C语言中的选择和循环语句
  18. Android 组件化开源 app -开眼短视频(OpenEyes)
  19. OCA,OCP,OCM傻傻分不清?
  20. 非常不错的地区三级联动,js简单易懂。封装起来了(转)

热门文章

  1. 韩顺平Java基础-第一阶段(建立编程思想)
  2. 异方差性和加权最小二乘法详解
  3. 如何添加或删除ubuntu用户和组
  4. CSS3变形之2D变形
  5. 造成BGA焊接不良问题有哪些?
  6. 【STM32】中断和中断优先级理解
  7. c++left right 和 setw() 函数的用法Alignment of Code
  8. HTML复选框的全选、全不选以及单选操作。
  9. 《卸甲笔记》-基础语法对比
  10. deli考勤机3960操作手册