基于SVM算法的男女生分类器

题目:采用SVM设计男女生分类器。采用的特征包含身高、体重、鞋码、50m成绩、肺活量、是否喜欢运动共六个特征。要求:采用平台提供的软件包进行分类器的设计以及测试,尝试不同的核函数设计分类器,采用交叉验证的方式实现对于性能指标的评判(包含SE,SP,ACC和AUC,AUC的计算基于平台的软件包)。

数据集

完整数据集请到Github仓库下载。

# 数据存放在 people.cvs 文件中
# 性别:0代表女,1代表男,是否喜欢运动:0代表不喜欢,1代表喜欢
# 性别,身高,体重,鞋码,50米成绩,肺活量,是否喜欢运动
0,164,47,38,9,2500,1
0,160,46,38,9,2500,1
0,165,60,39,7.4,2400,1
0,168,44,38,9,4000,0
0,167,49,38,6.9,3800,1
0,175,50,38,9,3800,0
0,172,43,36,7.9,2400,1
0,158,49,35,7.9,2400,1
0,162,46,36,9.5,2800,0
0,158,50,37,11,2500,0
0,165,48,36,8,2500,1
0,172,57,38,9.25,2800,0
...

代码实现

# -*- encoding: utf-8 -*-
'''
@File    :   svm.py
@Time    :   2021/02/04 08:57:33
@Author  :   Wang Jiaqing
@Contact :   wangjiaqingll@foxmail.com
'''# 导入必要包
import numpy as np
import pandas as pd
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split, KFold
from sklearn.metrics import roc_auc_score
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, auc, confusion_matrix  # 用于计算roc和aucdef maxminnorm(array):# 对数据集进行归一化maxcols = array.max(axis=0)mincols = array.min(axis=0)data_shape = array.shapedata_rows = data_shape[0]data_cols = data_shape[1]t = np.empty((data_rows, data_cols))for i in range(data_cols):t[:, i] = (array[:, i] - mincols[i]) / (maxcols[i] - mincols[i])return tdef svmfun():# 读取并处理数据集data = pd.read_csv('SVM算法/dataset/people.csv', header=None, sep=',')data = np.array(data)np.random.shuffle(data)labels = data[..., 0]  # 提取标签dataset = data[..., 1:7]  # 提取特征dataset = maxminnorm(dataset)  # 特征归一化x_train, x_test, y_train, y_test = train_test_split(dataset,  # 划分为训练集和测试集labels,test_size=0.2)i = 0KF = KFold(n_splits=4)  # 做4折交叉验证for train_index, test_index in KF.split(dataset):i += 1print("=" * 25, "The %d train:" % (i), "=" * 25)x_train, x_test = dataset[train_index], dataset[test_index]y_train, y_test = labels[train_index], labels[test_index]# 核函数--参数利用网格搜索法大致确定:# linear:gamma=0.1,C=10# rbf:C=10,gamma=0.1# sigmoid:C=10,gamma=0.1# poly:C=10,gamma=10clf = SVC(C=10,kernel='linear',  # 核函数,手动更改测试degree=3,gamma=0.1,coef0=0.0,shrinking=True,probability=False,tol=1e-3,cache_size=200,class_weight=None,verbose=False,max_iter=-1,decision_function_shape='ovr',random_state=None)clf.fit(x_train, y_train)y_predict = clf.predict(x_test)print('AUC')print(roc_auc_score(y_test, y_predict))print('ACC')print(accuracy_score(y_test, y_predict))fpr, tpr, threshold = roc_curve(y_test, y_predict)  # 计算真正率和假正率roc_auc = auc(fpr, tpr)  # 计算auc的值matrix = confusion_matrix(y_test, y_predict)  # 计算混淆矩阵TP = matrix[0][0]FP = matrix[0][1]FN = matrix[1][0]TN = matrix[1][1]SE = TP / (TP + FN)SP = TN / (TN + FP)print("SE:", SE)print("SP:", SP)lw = 2plt.figure(figsize=(10, 10))plt.plot(fpr,tpr,color='darkorange',lw=lw,label='ROC curve (area = %0.2f)' %roc_auc)  # 假正率为横坐标,真正率为纵坐标做曲线plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--')plt.xlim([0.0, 1.0])plt.ylim([0.0, 1.05])plt.xlabel('False Positive Rate')plt.ylabel('True Positive Rate')plt.title('Linear-SVM')plt.legend(loc="lower right")plt.show()svmfun()

基于SVM算法的男女生分类器相关推荐

  1. 基于SVM算法的人脸表情识别

    基于SVM算法的人脸

  2. 基于SVM算法的股票预测分析

    基于SVM算法的股票预测分析 1.数据集选取与描述 由于股票数据的混沌性.无序性,不适宜选取太多的数据作为模型训练的数据集.故本文选出的数据是"温氏股份"200个交易日的股票数据, ...

  3. 基于Adaboost算法的人脸检测分类器!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陈锴,Datawhale优秀学习者,中山大学数学系 人脸检测属于计 ...

  4. 基于SVM算法的车辆识别与评估

    2020年数学建模竞赛题目 已知某厂家根据不同车辆属性数据,将其编织成4种队伍,另外只有一批未知编队的车辆属性数据及不同车辆的属性介绍. 问题一:根据给出的数据将附件2中的车辆数据编队. 问题二:根据 ...

  5. 基于SVM算法的人脸微笑识别

    一.环境搭建 安装项目所需要的包: 包括sklearn.pandas.joblib等: 哪些红色就安装哪些 二.下载数据集 我用的是genki-4k数据集,后面我会提供整个项目,包括数据集,也可以自己 ...

  6. 基于OpenCV的 SVM算法实现数字识别(四)---代码实现

    三.基于SVM算法实现手写数字识别 作为一个工科生,而非数学专业的学生,我们研究一个算法,是要将它用于实际领域的.下面给出基于OpenCV3.0的SVM算法手写数字识别程序源码(参考http://bl ...

  7. SVM算法在项目实践中的应用!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:苏丽敏,Datawhale优秀学习者,北理工计算机硕士 支持向量机 ...

  8. 【机器学习基础】SVM算法在项目实践中的应用!

    作者:苏丽敏,Datawhale优秀学习者,北理工计算机硕士 支持向量机(Support Vector Machine)是Cortes和Vapnik于1995年首先提出的,它在解决小样本.非线性及高维 ...

  9. 对鸢尾花数据集和月亮数据集,分别采用线性LDA、k-means和SVM算法进行二分类可视化分析

    一.支持向量机 支持向量机是一个功能强大并且全面的机器学习模型,它可以执行线性或者非线性分类,回归甚至异常检测任务.其主要分为三类:线性SVM分类.软间隔分类.非线性SVM分类. 本篇博客将重点深入S ...

最新文章

  1. Python的运算符与表达式
  2. 产品原型设计的参考步骤
  3. 下载网页中的图片到本地
  4. 代码编写中会遇到的安全性问题
  5. openjdk17体验
  6. 算法基础知识(考试复习)
  7. [原创]Nexus5 内核编译烧录过程记录
  8. PAT Java 返回非零 的原因 OJ
  9. 浅谈android的am命令
  10. 简单易懂之python 中的map,filter,reduce用法
  11. 生成式对抗网络GAN汇总
  12. Vue 视频音频播放
  13. Ubuntu 404 Not Found [IP: 91.189.95.85 80]解决办法
  14. 安装ubantu-----服务器开发之路1
  15. 关于利用ADS进行多频多阻抗匹配的方法
  16. C++ 实现两线段是否相交、相交情况、若相交求出交点坐标
  17. 2021年全国职业院校技能大赛(中职组)网络安全竞赛试题(1)详细解析教程
  18. 2021四川艺术高考成绩查询,2021四川高考艺术类分数线预测
  19. 一文彻底理解Redis序列化协议,你也可以编写Redis客户端
  20. 双机热备+负载均衡(Heartbeat+DRBD+NFS+Keepalived+Lnmp)线上方案

热门文章

  1. html代码向左居右对齐
  2. 圣科车衣,给予您的爱车完美守护
  3. 蹦的一下,又来一个新属性scrollbar-gutter
  4. 怎么将pdf转换成excel转换器免费版
  5. 【计算机网络基础 七】输入URL到浏览器发生了什么
  6. MFC学习日记五:Mfc文本编程
  7. c语言放空一个数组,数组越界真可怕,莫名就闯到了别人家
  8. 苹果从中国赚六百多亿美元,却在转移生产线,该减轻对它的依赖了
  9. QQ农场破解思路(版本20091212)
  10. C# 调用ffmpeg把rtsp视频流保存为MP4文件