目录

一、基础理论

二、身高体重预测性别

1、获取数据(男女生身高体重)

2、数据处理(合并数据)

3、设置标签

4、创建分类器(支持向量机)

4-1、创建svm分类器

4-2、设置分类器属性(线性核)

5、训练

6、预测

总代码


一、基础理论

SVM本质:寻求一个最优的超平面进行分类。(分类器)

SVM核:支持很多核(这里主要使用线性核)

左图分类比较简单,一条线就可以分类;

但右图一条线明显无法完成分类,这时则需要多条线甚至曲线才能完成分类。

这里用的是监督学习,所以必须要有label标签(即目标值)。

二、身高体重预测性别

1、获取数据(男女生身高体重)

获取男女生身高体重(训练集、测试集) 

# 训练集
girls_train = np.array([[155, 48], [159, 50], [165, 55], [158, 55], [170, 58]])
boys_train = np.array([[162, 56], [182, 68], [175, 62], [180, 72], [178, 66]])
# 测试集
girls_test = np.array([[152,46], [164,55]])
boys_test = np.array([[175,64], [182, 67]])

2、数据处理(合并数据)

# 2 合并数据(并转浮点型,svm需要)
data = np.vstack((girls_train, boys_train))
data = np.array(data, dtype='float32')
print(data)
predict_data = np.vstack((girls_test, boys_test))
predict_data = np.array(predict_data, dtype='float32')
print(predict_data)

3、设置标签

# 3 设置标签(监督学习的目标值)(0:负样本;1:正样本)
label = np.array([[0],[0],[0],[0],[0],[1],[1],[1],[1],[1]])

4、创建分类器(支持向量机)

4-1、创建svm分类器

# 4-1 创建svm分类器
svm = cv2.ml.SVM_create()

4-2、设置分类器属性(线性核)

# 4-2 设置分类器属性
svm.setType(cv2.ml.SVM_C_SVC)       #svm 类型
svm.setKernel(cv2.ml.SVM_LINEAR)    #设置内核:线性核(最关键)
svm.setC(0.01)

5、训练

根据训练集和目标集,进行监督学习

# 5 训练
svm.train(data, cv2.ml.ROW_SAMPLE, label)

6、预测

# 6 预测
print(svm.predict(predict_data))

可以看到,结果预测成功,前面两个是女的(0),最后2个是男的(1),达到了想要的效果。

总代码

# SVM支持向量机(根据身高体重预测性别)
import cv2
import numpy as np# 1 获取数据(男女生身高体重)
# 训练集
girls_train = np.array([[155, 48], [159, 50], [165, 55], [158, 55], [170, 58]])
boys_train = np.array([[162, 56], [182, 68], [175, 62], [180, 72], [178, 66]])
# 测试集
girls_test = np.array([[152,46], [164,55]])
boys_test = np.array([[175,64], [182, 67]])# 2 合并数据(并转浮点型,svm需要)
train_data = np.vstack((girls_train, boys_train))
train_data = np.array(train_data, dtype='float32')
print(train_data)
test_data = np.vstack((girls_test, boys_test))
test_data = np.array(test_data, dtype='float32')
print(test_data)# 3 设置标签(监督学习的目标值)(0:负样本;1:正样本)
label = np.array([[0],[0],[0],[0],[0],[1],[1],[1],[1],[1]])
# print(label)# 4 创建分类器(支持向量机)
# 4-1 创建svm分类器
svm = cv2.ml.SVM_create()# 4-2 设置分类器属性
svm.setType(cv2.ml.SVM_C_SVC)       #svm 类型
svm.setKernel(cv2.ml.SVM_LINEAR)    #设置内核:线性核(最关键)
svm.setC(0.01)# 5 训练
svm.train(train_data, cv2.ml.ROW_SAMPLE, label)
#         训练集                          标签(目标集)# 6 预测
print(svm.predict(test_data))

机器学习(18)-- SVM支持向量机(根据身高体重分类性别)相关推荐

  1. 神经网络-1 利用年龄身高体重判断性别

    也许完全错误,先随便写写记着~~ 11行代码实现神经网络 这就是开头. 偶然冒出来一个想法,利用神经网络通过年龄身高体重判断性别. 在百度文库找了一份身高体重表 某地身高体重表 转到Excel里,把年 ...

  2. 吴恩达《机器学习》——SVM支持向量机

    SVM支持向量机 1. 线性SVM 1.1 从Logistic回归出发 1.2 大边界分类与SVM 1.3 调整正则化参数 2. 非线性SVM(高斯核函数) 2.1 高斯核 2.2 非线性分类 2.3 ...

  3. 机器学习_06:SVM支持向量机

    文章目录 实验背景 1.SVM算法原理 1.1.分隔超平面 1.2.最大间隔 1.2.1.寻找最小间隔数据点 1.2.2.拉格朗日乘子法 1.3.SMO高效优化算法 2.实验结果 3.总结 实验背景 ...

  4. MATLAB身高体重识别性别

    用身高和体重数据进行性别分类的实验报告(二) 一. 基本要求 1.试验非参数估计,体会与参数估计在适用情况.估计结果方面的异同. 2.试验直接设计线性分类器的方法,与基于概率密度估计的贝叶斯分类器进行 ...

  5. 【机器学习】SVM支持向量机在手写体数据集上进行二分类、采⽤ hinge loss 和 cross-entropy loss 的线性分类模型分析和对比、网格搜索

    2022Fall 机器学习 1. 实验要求 考虑两种不同的核函数:i) 线性核函数; ii) ⾼斯核函数 可以直接调⽤现成 SVM 软件包来实现 ⼿动实现采⽤ hinge loss 和 cross-e ...

  6. [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释

    12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.3 大间距分类背后的数学原理- Mathematic ...

  7. 机器学习:SVM支持向量机理解

    SVM应该是机器学习过程中第一个特别复杂的算法了,其中大量的数学推导公式和优化算法,对小白真的太不友好了.这篇文章参考了许多优秀博文,主要是了解一下SVM,尽量少涉及复杂的公式推导,有些直接给出结论. ...

  8. 【机器学习】SVM支持向量机模型

     本站原创文章,转载请说明来自<老饼讲解-机器学习>ml.bbbdata.com 目录 一. SVM的目标和思想 1.1 SVM硬间隔模型的原始目的 1.2 SVM的直接目标 1.3 什么 ...

  9. 机器学习——06 SVM支持向量机

    深度学习(2012)出现之前,SVM被认为机器学习中近十几年来最成功表现最好的算法. 比较适合较复杂的数据(图像分类.人脸识别) 1.1 SVM模型 SVM寻找区分两类的超平面,使边际最大. 向量内积 ...

最新文章

  1. linux中编译C语言程序
  2. 周杰伦林俊杰李宗盛快失业了!有了AI,未来人人都能秒变作曲家
  3. easyui_动态添加隐藏toolbar按钮
  4. VTK计算网格模型上的最短路径
  5. POJ 1185 炮兵阵地
  6. 页面监听,一段时间内不操作网页,就自动跳转到登录页
  7. LeetCode 347. 前 K 个高频元素(哈希/优先队列)
  8. Java基础篇3——流程控制
  9. 以Python为例对变量类型及运算符进行举例
  10. java字符串替换空格符_特殊的空格(Java无法替换字符串中的空格)转
  11. 小程序字符串拼接_小程序突袭预约!Yeezy 350quot;氧化满天星quot;拼接配色本月发售!...
  12. 中位数±四分位数表达_Python数据分析:强大字符串处理工具,正则表达式
  13. sqoop数据迁移(基于Hadoop和关系数据库服务器之间传送数据)
  14. 我的世界自定义脚本生成器易语言源码
  15. AVPlayer AVPlayerItem cannot service a seek request with a completion handler until its status is AV
  16. javascript计算两个时间差
  17. 【一】机器学习在网络空间安全研究中的应用
  18. nginx: [warn] conflicting server name “xxx“ on 0.0.0.0:80解决
  19. layui后台添加数据给php,layui怎么实现数据绑定
  20. Windows DNS服务器策略

热门文章

  1. python 正则表达质 re.sub() 的使用
  2. android PhotoView的用法
  3. 002_生活口语积累
  4. Linux安装Nginx、Redis、django
  5. HiveServer2
  6. zabbix3.2.3安装部署
  7. 经1503 20151453 张开拓
  8. Linux 的数字权限意义
  9. JAVA图片处理--缩放,切割,类型转换
  10. DIV+CSS一行两列布局