SVM深入理解&人脸特征提取

本文深入探讨了SVM的支持向量机概念,并通过多项式核和高斯核重新实现鸢尾花分类。同时,介绍了如何使用dlib和opencv进行人脸特征提取,包括实时采集人脸、提取68个特征点并实现虚拟墨镜效果。
摘要由CSDN通过智能技术生成

SVM深入理解&人脸特征提取

人工智能与机器学习第8周作业


1. 深入了解SVM算法在解决线性不可分类时,对特征集进行多项式、核函数转换(升维)将其转换为线性可分类问题的思想。完成以下任务: 对照参考资料“支持向量机-课件-518.docx”,将其中的例子代码在Jupyter中重新做一遍。并将例子代码中采用多项式分类函数、高斯核函数对鸢尾花、月亮数据集进行SVM训练所得到最终分类决策函数,输出出来。
支持向量机-课件-518.docx下载

2. 以人脸识别(属于分类问题)为例,理解实际应用中的特征数据集提取。
1)用python3+opencv3.4+dlib库编程,打开摄像头,实时采集人脸并保存、绘制68个特征点;
2)不在原视频上绘制显示特征点,而是给人脸虚拟P上一付墨镜(提示:找到双眼特征点坐标值,以坐标中心点为圆心,用opencv函数绘制两个圆,并填充黑色)



一、SVM深入理解

1. 支持向量机

在上一篇博客中有引用百度百科的定义线性判别准则与线性分类编程实践

2.重做鸢尾花

1.多项式核

  1. 导入包
## 导入包
from sklearn import datasets #导入数据集
from sklearn.svm import SVC #导入svm
from sklearn.pipeline import Pipeline #导入python里的管道
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler#导入标准化
#多项式核svm
from sklearn import datasets #导入数据集
from sklearn.svm import LinearSVC #导入线性svm
from sklearn.pipeline import Pipeline #导入python里的管道
from matplotlib.colors import ListedColormap
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler,PolynomialFeatures #导入多项式回归和标准化
  1. 定义
scaler=StandardScaler()# 标准化
scaler.fit(data_x)#计算训练数据的均值和方差
data_x=scaler.transform(data_x) #再用scaler中的均值和方差来转换X,使X标准化
liner_svc=LinearSVC(C=1e9,max_iter=100000)#线性svm分类器,iter是迭达次数,c值决定的是容错,c越大,容错越小
liner_svc.fit(data_x,data_y)
  1. 边界绘制函数
# 边界绘制函数
def plot_decision_boundary(model,axis):
    x0,x1=np.meshgrid(
        np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1),
        np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1))
    # meshgrid函数是从坐标向量中返回坐标矩阵
    x_new=np.c_[x0.ravel(),x1.ravel()]
    y_predict=model.predict(x_new)#获取预测值
    zz=y_predict.reshape(x0.shape)
    custom_cmap=ListedColormap(['#EF9A9A','#FFF59D','#90CAF9'])
    plt.contourf(x0,x1,zz,cmap=custom_cmap)
  1. 读取鸢尾花数据集
#读取鸢尾花数据集
data=datasets.load_iris()
data_x=data.data
data_y=data.target
  1. 显示鸢尾花数据集
plt.scatter(data_x[data_y==0,0],data_x[data_y==0,1])
plt.scatter(data_x[data_y==1,0],data_x[data_y==1,
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值