机器学习——支持向量机(SVM)

机器学习——支持向量机(SVM)_第1张图片

1.线性支持向量机

1.1数学模型

机器学习——支持向量机(SVM)_第2张图片
机器学习最终都是求解目标函数的最优问题;
一般都是讲问题转化为最小值来求解。

数学模型获得是一个不等式约束的最小化问题,求解时可通过构建拉格朗日函数求解。

1.2 拉格朗日函数及对偶问题求解

机器学习——支持向量机(SVM)_第3张图片

1.3 SMO算法求解

SMO算法:参考:https://zhuanlan.zhihu.com/p/29212107
KKT条件:参考:https://zhuanlan.zhihu.com/p/556832103

2.带松弛因子的SVM——软间隔

机器学习——支持向量机(SVM)_第4张图片

3.非线性支持向量机

机器学习——支持向量机(SVM)_第5张图片
机器学习——支持向量机(SVM)_第6张图片

4.Python代码

4.1 SVM常见的几种模型

1.SVC,(分类问题)
2.SVR,(回归问题)
3.LinearSVC
4.LinearSVR
5…其他等等

4.1数据集介绍

机器学习——支持向量机(SVM)_第7张图片
Iris.data中有5个属性,包括4个预测属性(萼片长度、萼片宽度、花瓣长度、花瓣宽度)和1个类别属性(Iris-setosa、Iris-versicolor、Iris-virginica三种类别)。首先,需要将第五列类别信息转换为数字,再选择输入数据和标签。

from sklearn import datasets #导入数据集模块
from sklearn.model_selection import train_test_split #数据集划分
from sklearn import svm  #导入SVM支持向量机
from sklearn.metrics import classification_report   #用于显示主要分类指标的文本报告
import sklearn.metrics as sm #生成混淆矩阵的库
import seaborn as sn  #混淆矩阵可视化的库
import matplotlib.pyplot as plt #画图
#--------------------------------1.加载数据集---------------------------------#
iris = datasets.load_iris()#加载鸢尾花数据集
print(iris)
X = iris.data #输入特征
Y = iris.target #标签(输出特征)
print(X)
print('----------------')
print(Y)
print('----------------')
print('鸢尾花输入特征的维度是{}'.format(X.shape))
print('鸢尾花标签的维度是{}'.format(Y.shape))

#--------------------------------2.划分数据集---------------------------------#
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=45) # 数据划分
#--------------------------------3.模型训练---------------------------------#
clas = svm.SVC()#选择分类器
clas.fit(X_train,Y_train)#训练
#--------------------------------4.模型预测---------------------------------#
Y_pre=clas.predict(X_test)#预测测试集

#--------------------------------5.性能评估---------------------------------#
m = sm.confusion_matrix(Y_test, Y_pre) #生成混淆矩阵
print('混淆矩阵为:', m, sep='\n')
ax = sn.heatmap(m,annot=True,fmt='.20g')
ax.set_title('confusion matrix')
ax.set_xlabel('predict')
ax.set_ylabel('true')
plt.show() #混淆矩阵可视化
print("测试集准确率:%s"%clas.score(X_test,Y_test))   #输出测试集准确度
print("分析报告:",classification_report(Y_test,Y_pre))#生成分类报告

参考:https://blog.csdn.net/weixin_45450828/article/details/133923250?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-133923250-blog-132173815.235%5Ev38%5Epc_relevant_sort_base1&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-133923250-blog-132173815.235%5Ev38%5Epc_relevant_sort_base1&utm_relevant_index=5

你可能感兴趣的:(机器学习,支持向量机,机器学习,算法)