1 近红外光谱

红外光 近红外光谱仪(Near Infrared Spectrum Instrument,NIRS)是介于可见光(Vis)和中红外(MIR)之间的电磁辐射波,美国材料检测协会(ASTM)将近红外光谱区定义为780-2526nm的区域,是人们在吸收光谱中发现的第一个非可见光区。近红外光谱区与有机分子中含氢基团(O-H、N-H、C-H)振动的合频和各级倍频的吸收区一致,通过扫描样品的近红外光谱,可以得到样品中有机分子含氢基团的特征信息,而且利用近红外光谱技术分析样品具有方便、快速、高效、准确和成本较低,不破坏样品,不消耗化学试剂,不污染环境等优点,因此该技术受到越来越多人的青睐。

2 SVM算法

支持向量机(support vector machines, SVM)是一种二分类模型,它的基本模型是定义在特征空间上的间隔最大的线性分类器,间隔最大使它有别于感知机;SVM还包括核技巧,这使它成为实质上的非线性分类器。SVM的的学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。SVM的的学习算法就是求解凸二次规划的最优化算法。

3 算法实现

实验数据来源于:nirpy
milk-powder数据集包含11个不同的类别,对应的样本从100%奶粉到0%奶粉(即100%椰子奶粉)下降10%。

#导入包
import pandas as pd
import numpy as np
from matplotlib.pyplot import imshow, show, colorbar
import matplotlib.pyplot as plt
from operator import truediv
from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.metrics import cohen_kappa_score
#导入数据
data = pd.read_csv('/milk-powder.csv')
y = data.iloc[:,1].values.astype('uint8')#标签
X = data.iloc[:,2:].values#光谱值
#SVM训练
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 100) #划分30%数据为测试,70%为训练
from sklearn.svm import SVC
classifier = SVC(C=1000,kernel='rbf', random_state=0) #设定核参数
classifier.fit(X_train, y_train)
# 测试集结果
y_pred = classifier.predict(X_test)
#画混淆矩阵
from pretty_confusion_matrix import pp_matrix
from sklearn.metrics import confusion_matrix
label = ['1','2','3','4','5','6','7','8','9','10','11']
cm = confusion_matrix(y_test, y_pred)
cm = pd.DataFrame(cm, index=np.unique(label), columns=np.unique(label))
cm.index.name = 'Actual'
cm.columns.name = 'Predicted'
fig, ax = plt.subplots(figsize=(15,10))
plt.rcParams.update({'font.size': 12})
cmap = "Greens_r"
pp_matrix(cm, cmap=cmap)
#预测结果
counter = cm.shape[0]
list_diag = np.diag(cm)
list_raw_sum = np.sum(cm, axis=1)
each_acc = np.nan_to_num(truediv(list_diag, list_raw_sum))
average_acc = np.mean(each_acc)
kappa = metrics.cohen_kappa_score(y_pred, y_test)
overall_acc = metrics.accuracy_score(y_pred, y_test)

4 结果

用平均精度、kappa系数和总体精度衡量SVM的分类性能。

average_acc = 0.9772727272727273
kappa = 0.9831675592960979
overall_acc = 0.9848484848484849

基于SVM的近红外光谱分类相关推荐

  1. 基于SVM的近红外光谱建模

    系列文章目录 近红外光谱分析技术属于交叉领域,需要化学.计算机科学.生物科学等多领域的合作.为此,在(北京邮电大学杨辉华老师团队)指导下,近期准备开源传统的PLS,SVM,ANN,RF等经典算和SG, ...

  2. 利用python,基于SVM实现文本分类

    项目代码见Github: 算法介绍 具体内容详见本人文档,下载链接 代码所用数据 原网站 文件结构 ├─doc_classification.py ├─stopwords.txt ├─vocabula ...

  3. matlab图像分类器,Matlab 基于svm的图像物体分类

    Matlab 基于svm的图像物体分类 发布时间:2018-05-16 20:27, 浏览次数:1623 , 标签: Matlab svm 本周工作日志,老师布置了一个小作业,让我们使用matlab实 ...

  4. 基于机器学习的车牌识别系统(Python实现基于SVM支持向量机的车牌分类)

    基于机器学习的车牌识别系统(Python实现基于SVM支持向量机的车牌分类) 一.数据集说明 训练样本来自于github上的EasyPR的c++版本,包含一万三千多张数字及大写字母的图片以及三千多张中 ...

  5. 基于SVM的点云分类(树木,建筑两类)

    西南某高校遥感专业在读生(个人网站:YhQIAO)这学期选了院里张老师的<三维扫描技术>选修课,干货满满,期末有个大作业svm点云分类,正好前段时间对机器学习比较感兴趣,了解了点算法,但是 ...

  6. 基于SVM的乳腺癌数据集分类

    目录 1.作者介绍 2.SVM算法介绍 2.1 SVM算法 2.2 SVM算法理解与分析 3.乳腺癌数据集介绍 4.基于SVM的乳腺癌数据集分类实验 4.1 导入所需要的包 4.2 导入乳腺癌数据集 ...

  7. Python 基于SVM和KNN算法的红酒分类

    Python 机器学习之红酒分类问题 文章目录 Python 机器学习之红酒分类问题 前言 一.问题和目标是什么 1.原题 2.题目分析 二.算法简介 三.代码实现 1.算法流程框架 2.第三方库调用 ...

  8. HanLP 基于SVM支持向量机 训练 文本分类

    一.HanLP 基于SVM支持向量机分类器 上篇文章通过朴素贝叶斯文本分类器,训练测试了 搜狗文本分类语料库迷你版 ,本篇继续测试SVM支持向量机分类器. 由于HanLP 官方给出的 SVM 分类器依 ...

  9. 【图像识别】基于svm植物叶子疾病检测和分类

    初识SVM 同其他分类算法一样,SVM分类也是寻找合适的决策边界,为方便理解,以二分类为例. 假设存在二分类样本,我们一定可以找到一个超平面将类别分开,但是通常会存在很多这样的超平面. 那取哪个呢? ...

最新文章

  1. GStreamer 1.0 series序列示例
  2. centos使用boost过程
  3. Android之linux基础教学之六 异常
  4. Docker两个问题的讨论
  5. ImageSharp一个专注于NetCore平台图像处理的开源项目
  6. java程序员常用查询和学习的网站
  7. 图片照片展示html5模板
  8. .net实现URL重写
  9. 人工智能发展史_人工智能发展史:4张图看尽AI重大里程碑
  10. 华为鸿蒙OS用户今年底或达2亿 将发布自研鸿蒙编程语言
  11. java304是什么错误_304 Not Modified 的意思 (Web的Cache问题)
  12. 工作资讯001---行业思维模式及经典语录随时更新
  13. 作为开发人员,U盘32G太小了,256G才够用
  14. 数据库系统基础教程(1)数据库系统世界
  15. 盘点客户管理软件应有的功能有哪些?
  16. GD32 汽车诊断协议 J1850-VPW 测试
  17. 怎么免费获取帆软9.0激活码,帆软8.0激活码,如何激活
  18. 各种后缀名--使用什么软件打开
  19. acwing.回文质数
  20. ABAP VF01 / VF04销售开票增强 增加校验

热门文章

  1. lisp 多段线转面域_晓东CAD家园-论坛-晓东工具箱、编程申请-[编程申请]:批量面域转成闭合多段线!!!!-批量面域转成闭合多段线!!!! - Powered by Discuz!...
  2. springboot连接MySQL使用SSL证书
  3. 视频会议系统产品哪个比较好
  4. Android高效率实现弹出带动画效果的对话框,仿照微信对话框效果
  5. 北京邮电大学计算机应用技术调剂上,2017年北京邮电大学考研调剂通知
  6. 小牛叔讲Python第12章:面向对象类与实例(Class入门)
  7. uniapp 小程序uni.getLocation()不能返回中文地理位置
  8. gzip: stdin: unexpected end of file 问题的解决。
  9. 2048 Puzzle游戏攻略
  10. 期货CTP接口与程序化(量化交易)的对接(2)——基本概念