项目二:使用机器学习(SVM)进行基因预测

时间:2023-02-16 09:45:56

SVM软件包

LIBSVM -- A Library for Support Vector Machines(本项目所用到的SVM包)(目前最新版:libsvm-3.21,2016年7月8日)

C-SVC(C-support vector classification), nu-SVC(nu-support vector classification), one-class SVM(distribution estimation), epsilon-SVR(epsilon-support vector regression), nu-SVR(nu-support vector regression).

官网学习资料:

LibSVM学习(一)- 初识LibSVM

libsvm的原理及使用方法介绍(文库,全面,是对上面博客的总结)

libsvm-2.8程序代码导读

libsvm安装教学(文库繁体)

 

练手项目(百度libsvm项目):

使用libsvm实现文本分类

说一说我对用LIBSVM进行回归预测的粗浅认识(整理完成于2012年5.11)

 

LIBSVM的缩放和结果分析(转载)

本项目中需要用到预测的概率,所以在训练和预测时,均要加上-b参数。

>svm-train.exe -b 1 scaled_1 scaled_1_model
>svm-predict.exe -b 1 test_1 scaled_1_model scaled_1_output_file

我们还更改了流程化脚本easy.py和grid.py:

主要为了解决交叉检验的效率,参数选优的效率(内存和并行),以及概率输出。

我做的工作:

曹老师给了我原始数据(正负训练集,测试集),我首先写perl脚本,进行格式转换;转化为libsvm可用的格式;

其次搞懂libsvm的使用,主要是scale、train、predict,比较简单;其中scale必须保证缩放规则相同,-s,-r;train选c-svc,内核选RBF,-b概率输出;predict就是-b概率预测就好了;整个流程都被写在easy.py脚本里了,看懂脚本,对命令做简单的修改,就可以一步执行了;其中参数选优最为耗时,需适当修改grid.py脚本。

最后,我还做了one-class的建模和预测;这个没有参数寻优的脚本,也不支持概率输出,所以我就选了几个参数试了试;其中-n非常重要。

后续工作:

accuracy、sensitivity、specificity等统计指标的分析

用coreset来限制训练集,建立模型,来预测训练集中其他的部分;

 

 

SVM基础知识

支持向量机通俗导论(理解SVM的三层境界)(全) (分3章,文章末尾有很多SVM的学习资料)

Coursera的ML视频:Machine Learning - 第7周(Support Vector Machines)

SVM - 知乎精华

支持向量机请通俗介绍 高中文化

交叉验证

深入理解参数选优时交叉检验的作用:libsvm交叉验证(讲得很好)

 

欧式空间的基本概念

矩阵的特征值与特征向量

特征空间(特征提取和特征选择)

决策树学习笔记整理

SVM入门(一)至(三)Refresh

 

基因注释概念

基因组注释介绍  注释四部分:重复序列;非编码RNA;基因结构;功能注释。

真核基因组注释方法与流程的文章A beginner's guide to eukaryotic genome annotation

基因组注释分析主要包括哪些内容 ?

转座子 - 可移动的遗传因子, 一段DNA顺序可以从原位上单独复制或断裂下来,环化后插入另一位点,并对其后的基因起调控作用,此过程称转座。

coreset

 

数据前处理

注意:

  • 去掉此列95_IsLongerGeneCover(这个特征值会影响预测结果,不需要它,所以除去,很简单一个last搞定)
  • 训练集正负样本有严重的数量差距,这也会影响训练和预测的结果的准确度。测试发现:pos = 29778, neg = 2238.

1.我拿到的数据有两种,一个是用于二分类的数据;一个是用于4分类的数据。

2.二分类的数据曹老师已经帮我提取好了,我只需要处理成libsvm的输入格式就行;四分类的数据则需要我自己处理,曹老师只给了我总表,已经相应的基因序列号,我需要单独提取处理出来,转成libsvm所需的格式。(里面有5个数据,一个总表,另外四种类型的基因数据。总表中,刚刚说的,前5列不用考虑,然后把非数值型转成数值型再做。如果结果 不好的话,将四种训练集中的样本数目降成相当的数目,以免引起偏差。)

3.数据格式处理?这个需要详细说明

    首先,明确libsvm的格式要求,+1 1:0.708333 2:1 3:1 4:-0.320755 5:-0.105023 6:-1 7:1 8:-0.419847 9:-1 10:-0.225806 12:1 13:-1 (行末尾有空格);

    其次,我们的表格数据里的哪些数据是无用的?非数值列如何转换为数值型数据?如何合理制作标签?数据按列进行处理;前5列:1_Chrom    2_GeneID    3_Start    4_End    5_Strand是无用的,因为它们只是基因的基本信息,需要去掉;最后一列是预测目标,需要提到第一列;其他的列数值化比较简单。

    麻烦的是6_Evidence列的处理,根据曹老师要求,根据优先级进行分类,凡是有PROTEIN的归一类;否则,凡是有cDNA归一类;否则,凡是有oest的归一类;否则,凡是有EST的归一类;其他的归为最后一类(可能不存在这一类,因为都有证据)。

perl脚本得出的第6列(共15种):

PROTEIN|cDNA|oest AND EST|PROTEIN|cDNA AND PROTEIN|cDNA AND EST|PROTEIN AND EST|PROTEIN|oest AND EST|PROTEIN|cDNA|oest AND PROTEIN AND PROTEIN|oest = 1

EST|cDNA AND cDNA AND cDNA|oest AND EST|cDNA|oest = 2

oest AND EST|oest = 3

EST = 4

perl脚本得出的第8列(共5种):

protein_coding_partial = 1

protein_coding = 2

untranslated = 3

pseudogene = 4

protein_coding_short = 5

参考:

perl 提取文件的指定列

perl split()函数详解

总结经验

数据版本的控制,很大的问题,有时候只对数据做很小的修改,然后重新跑,改多了,对数据版本的控制的需求就来了,否则时间一久,根本就不知道自己当初每次都做了啥。(重在项目记录)

项目二:使用机器学习(SVM)进行基因预测的更多相关文章

  1. 文本分类学习 (五) 机器学习SVM的前奏-特征提取(卡方检验续集)

    前言: 上一篇比较详细的介绍了卡方检验和卡方分布.这篇我们就实际操刀,找到一些训练集,正所谓纸上得来终觉浅,绝知此事要躬行.然而我在躬行的时候,发现了卡方检验对于文本分类来说应该把公式再变形一般,那样 ...

  2. 使用pmml跨平台部署机器学习模型Demo——房价预测

      基于房价数据,在python中训练得到一个线性回归的模型,在JavaWeb中加载模型完成房价预测的功能. 一. 训练.保存模型 工具:PyCharm-2017.Python-39.sklearn2 ...

  3. 解密SVM系列(二):SVM的理论基础(转载)

    解密SVM系列(二):SVM的理论基础     原文博主讲解地太好了  收藏下 解密SVM系列(三):SMO算法原理与实战求解 支持向量机通俗导论(理解SVM的三层境界) 上节我们探讨了关于拉格朗日乘 ...

  4. [机器学习]SVM原理

    SVM是机器学习中神一般的存在,虽然自深度学习以来有被拉下神坛的趋势,但不得不说SVM在这个领域有着举足轻重的地位.本文从Hard SVM 到 Dual Hard SVM再引进Kernel Trick ...

  5. 基于PASA进行基因预测

    PASA, acronym for Program to Assemble Spliced Alignments, is a eukaryotic genome annotation tool tha ...

  6. miRNA分析--靶基因预测(三)

    miRNA分析--数据过滤(一) miRNA分析--比对(二) 根据miRNA Target Prediction in Plants, miRNA并非所有区域都要求严格匹配,其中第1位碱基和第14位 ...

  7. Eclipse+Maven创建webapp项目<二> (转)

    Eclipse+Maven创建webapp项目<二> 1.开启eclipse,右键new——>other,如下图找到maven project 2.选择maven project,显 ...

  8. Vue小项目二手书商城:(四)详情页和购物车(emit、prop、computed)

    实现效果: 点击对应商品,对应的商品详情页出现,详情页里面还有“Add to cart”按钮和“×”退出按钮. 点击“Add to cart”可以将商品加入购物车,每件商品只能添加一次,如果把购物车的 ...

  9. Vue小项目二手书商城:(三)前端渲染数据

    实现内容: axios取到的数据在前端使用(父子组件各自应该怎么使用) 一.简单使用(在哪取在哪用) 1.在App.vue中script中加上data(data专属于当前组件,父子组件传参通过prop ...

随机推荐

  1. js动态生成选项之考试系统&lpar;一&rpar;

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  2. VMware中CentOS设置静态IP

    因为之前搭建的MongoDB分片没有采用副本集,最近现网压力较大,所以准备研究一下,于是在自己电脑的虚拟机中搭建环境,但是发现之前VMware设置的是DHCP,所以每次重新resume后虚拟机中IP都 ...

  3. div模仿select效果二:带搜索框

    项目需要,要做一个首字母快速定位的select,代码如下: HTML <div class="select_country" unselectable="on&qu ...

  4. 安装eclipse中文汉化包后无法打开eclipse

    通过在线安装中文汉化包后一直提示无法启动程序在.log中查看日志 !SESSION 2016-01-15 11:22:57.959 ---------------------------------- ...

  5. 【基础练习】【vector】codevs3393 序列倒置

    版权信息 转载请注明出处 [ametake版权全部]http://blog.csdn.net/ametake欢迎来看 题目非常easy,本质还是练习一下vector 题目描写叙述 Descriptio ...

  6. es6的常用语法

    最常用的ES6特性 let, const, class, extends, super, arrow functions, template string, destructuring, defaul ...

  7. 浅析Linux内核调度

    1.调度器的概述 多任务操作系统分为非抢占式多任务和抢占式多任务.与大多数现代操作系统一样,Linux采用的是抢占式多任务模式.这表示对CPU的占用时间由操作系统决定的,具体为操作系统中的调度器.调度 ...

  8. JavaScript中var、let和const的区别&lpar;转载&rpar;

    一.前言 在ES6(ES2015)出现之前,JavaScript中声明变量就只有通过 var 关键字,函数声明是通过 function 关键字,而在ES6之后,声明的方式有 var . let . c ...

  9. navicat for mysql 连接报错1251详细解决步骤

    我的是8.0的版本,因为比较新的mysql采用新的保密方式所以旧的似乎不能用,改密码方式:use mysql:ALTER USER 'root'@'localhost' IDENTIFIED WITH ...

  10. justify-content &amp&semi; align-items &amp&semi; align-content

    [justify-content & align-items & align-content] 三个属性均作用于container. justify-content用于控制main-a ...