SVM分类器实现
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• SVM的主要优点:1、在高维空间有效;2、样本维度比样本数高时任然有效;3、少样本量情况 下分类效果显著;4、灵活,指定不同的核函数使得SVM可以在非常多的场景中应用。
• SVM的主要缺点:1、数据体量巨大时,相对于并行算法,耗时非常大。2、参数多,调优难度 较大。
SVM算法 简介2
• 原理上,最简单的支持向量机就是一条直线,划分了线性可分的两个类,而且,它恰好在两个 类中间,距离两个类的点都一样远,这是无数条可分类的直线中最完美的,其中,最接近直线 的点,就是支持向量,如果去掉这些点,这条直线多半要改变位置,所以顾名思义,支持向量 机,就是由向量支撑起来的分类机器。
# 读取wine数据集 df = pd.read_csv("./wine数据集.txt", header=None) # 展示部分源数据 df.head()
实例:源数据部分展示
#展示部分源数据
实例:划分数据集并标准化
# 把数据集切分为训练数据和测试数据,标准化 trainData, testData = train_test_split(df, test_size=0.2) # 数据标准化,获取每列均值,标准差 avg_col = trainData.mean() td_col = trainData.std() # 标准化 df_train_norm = (trainData - avg_col) / td_col # 整理训练数据 df_train_norm = df_train_norm.drop([0], axis=1).join(trainData[0]) trainData_X = np.array(df_train_norm.drop([0], axis=1)) trainData_Y = np.array(df_train_norm[0])
实例:启动Python,读取数据
# -*-coding:utf-8-*from sklearn import svm from sklearn.model_selection import train_test_split import pandas as pd import numpy as np
实例:调用模型并训练
# 生成SVM分类器模型 clf = svm.SVC(C=1.0, # 惩罚因子
kernel='rbf', # 核函数,常用核有'linear'线性核, 'poly'多项式核, 'rbf'高斯核(默认),'Sigmoid'逻辑回归核 degree=3, # 多项式核的阶数,默认3,对其他核函数无效 gamma='auto', # 对于rbf,sigmoid 等核函数,指定gamma参数,auto 即 gamma = 1/数据维度数 coef0=0.0, # 偏置参数,对poly与sigmoid 生效 shrinking=True, # 是否选用分解算法 probability=False, # 是否进行概率估计 tol=1e-3, # 最少误差,误差达到tol时停止训练 cache_size=200, # 指定内核缓存的大小 class_weight='balanced', # 样本惩罚因子权重,适用于样本类别不平衡情况,如1类,2类比为 1:2,则 {1:1,2:2} verbose=False, # 是否打印训练过程 max_iter=-1, # 迭代次数,-1为无限制 decision_function_shape='ovr', # 多类分类模式,有ovo(一对一分类),ovr(一对多分类) random_state=None) # 指定随机种子
• 计算上可以嵌入核函数,实现非线性分类。
图中实心的点均变换
SVM算法流程
数据整理清洗 划分训练集
按训练集特征标准化训练与检验数据
构建并训练回归模型
针对测试集数据,进行模型评价 保留模型,标准化信息,模型应用
提纲
SVM算法简介 SVM实验
Python 进行SVM实践
# 标准化 df_test_norm = (testData - avg_col) / td_col # 整理训练数据 df_test_norm = df_test_norm.drop([0], axis=1).join(testData[0]) testData_X = np.array(df_test_norm.drop([0], axis=1)) testData_Y = np.array(df_test_norm[0])
• 系统准备:centos6.8、Spark 2.3.1、Pyrhon3.X • 数据准备:采用UCI机器学习库中的wine数据集作为算法数据,包括了三种酒中13
种不同成分的数量。成分分别为:Alcohol,Malicacid,Ash,lcalinity of ash, Magnesium,Total phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins, Color intensity,Hue,OD280/OD315 of diluted wines,Proline。在 “wine.data”文 件中,每行代表一种酒的样本,共有178个样本;一共有14列,其中,第一列为 类标志属性,共有三类,分别记为“1”,“2”,“3”;后面的13列为每个样本的 对应属性的样本值。第1类有59个样本,第2类有71个样本,第3类有48个样本。 • 建模目的:训练SVM分类器,使得知道13个特征后,把样本划归到相应类别。
SVM分类器 简介与 python实践
演讲人:
时间:
提纲
SVM算法简介 SVM实验
SVM算法 简介1
• 支持向量机是一个十分流行的针对二分类线性分类器,分类的方式是找到一个最优的超平面把 两个类别分开。定义“最优”的方式是使离分隔面最近的数据点到分隔面的距离最大,从而把 这个问题转化成了一个二次优化问题。通过拉格朗日变换,使得SVM可以应用不同的核函数 (包括非线性核),从而使其获得处理非线性分类的能力。
• SVM的主要缺点:1、数据体量巨大时,相对于并行算法,耗时非常大。2、参数多,调优难度 较大。
SVM算法 简介2
• 原理上,最简单的支持向量机就是一条直线,划分了线性可分的两个类,而且,它恰好在两个 类中间,距离两个类的点都一样远,这是无数条可分类的直线中最完美的,其中,最接近直线 的点,就是支持向量,如果去掉这些点,这条直线多半要改变位置,所以顾名思义,支持向量 机,就是由向量支撑起来的分类机器。
# 读取wine数据集 df = pd.read_csv("./wine数据集.txt", header=None) # 展示部分源数据 df.head()
实例:源数据部分展示
#展示部分源数据
实例:划分数据集并标准化
# 把数据集切分为训练数据和测试数据,标准化 trainData, testData = train_test_split(df, test_size=0.2) # 数据标准化,获取每列均值,标准差 avg_col = trainData.mean() td_col = trainData.std() # 标准化 df_train_norm = (trainData - avg_col) / td_col # 整理训练数据 df_train_norm = df_train_norm.drop([0], axis=1).join(trainData[0]) trainData_X = np.array(df_train_norm.drop([0], axis=1)) trainData_Y = np.array(df_train_norm[0])
实例:启动Python,读取数据
# -*-coding:utf-8-*from sklearn import svm from sklearn.model_selection import train_test_split import pandas as pd import numpy as np
实例:调用模型并训练
# 生成SVM分类器模型 clf = svm.SVC(C=1.0, # 惩罚因子
kernel='rbf', # 核函数,常用核有'linear'线性核, 'poly'多项式核, 'rbf'高斯核(默认),'Sigmoid'逻辑回归核 degree=3, # 多项式核的阶数,默认3,对其他核函数无效 gamma='auto', # 对于rbf,sigmoid 等核函数,指定gamma参数,auto 即 gamma = 1/数据维度数 coef0=0.0, # 偏置参数,对poly与sigmoid 生效 shrinking=True, # 是否选用分解算法 probability=False, # 是否进行概率估计 tol=1e-3, # 最少误差,误差达到tol时停止训练 cache_size=200, # 指定内核缓存的大小 class_weight='balanced', # 样本惩罚因子权重,适用于样本类别不平衡情况,如1类,2类比为 1:2,则 {1:1,2:2} verbose=False, # 是否打印训练过程 max_iter=-1, # 迭代次数,-1为无限制 decision_function_shape='ovr', # 多类分类模式,有ovo(一对一分类),ovr(一对多分类) random_state=None) # 指定随机种子
• 计算上可以嵌入核函数,实现非线性分类。
图中实心的点均变换
SVM算法流程
数据整理清洗 划分训练集
按训练集特征标准化训练与检验数据
构建并训练回归模型
针对测试集数据,进行模型评价 保留模型,标准化信息,模型应用
提纲
SVM算法简介 SVM实验
Python 进行SVM实践
# 标准化 df_test_norm = (testData - avg_col) / td_col # 整理训练数据 df_test_norm = df_test_norm.drop([0], axis=1).join(testData[0]) testData_X = np.array(df_test_norm.drop([0], axis=1)) testData_Y = np.array(df_test_norm[0])
• 系统准备:centos6.8、Spark 2.3.1、Pyrhon3.X • 数据准备:采用UCI机器学习库中的wine数据集作为算法数据,包括了三种酒中13
种不同成分的数量。成分分别为:Alcohol,Malicacid,Ash,lcalinity of ash, Magnesium,Total phenols,Flavanoids,Nonflavanoid phenols,Proanthocyanins, Color intensity,Hue,OD280/OD315 of diluted wines,Proline。在 “wine.data”文 件中,每行代表一种酒的样本,共有178个样本;一共有14列,其中,第一列为 类标志属性,共有三类,分别记为“1”,“2”,“3”;后面的13列为每个样本的 对应属性的样本值。第1类有59个样本,第2类有71个样本,第3类有48个样本。 • 建模目的:训练SVM分类器,使得知道13个特征后,把样本划归到相应类别。
SVM分类器 简介与 python实践
演讲人:
时间:
提纲
SVM算法简介 SVM实验
SVM算法 简介1
• 支持向量机是一个十分流行的针对二分类线性分类器,分类的方式是找到一个最优的超平面把 两个类别分开。定义“最优”的方式是使离分隔面最近的数据点到分隔面的距离最大,从而把 这个问题转化成了一个二次优化问题。通过拉格朗日变换,使得SVM可以应用不同的核函数 (包括非线性核),从而使其获得处理非线性分类的能力。