Files
ECGTest/基于机器学习的心电图诊断识别/基于集成学习的心电图诊断识别/水滴实验营.html
T
2022-11-09 10:41:47 +08:00

365 lines
96 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<!-- saved from url=(0048)https://edu.shuidilab.cn/console/expdesktop/5668 -->
<html lang="zh-cn" delegate-events="click,change"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><style class="vjs-styles-defaults">
.video-js {
width: 300px;
height: 150px;
}
.vjs-fluid {
padding-top: 56.25%
}
</style>
<meta http-equiv="Cache-Control" content="max-age=7200">
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<meta name="description" content="“水滴实验营”是一个专门为高校师生、科研人员及IT从业人员提供计算机技术相关实验课程的在线教学实训服务平台。平台支持按需定制的实验环境、秒级就绪的实验桌面、互动互助的实验教学模式,并专门想高校教师提供实验监控、作业考试、学情分析等精准教学服务,同时也可为高等院校、科研机构以及IT培训机构定制专属的在线实验教学门户。">
<meta name="keywords" content="水滴实验营,水滴,实验,实验营,教学实训,大数据,云计算,人工智能,高性能计算,信息技术,实验室,大数据实验室,云计算实验室,IT在线教育,编程,在线编程,Linux,Python,在线实验,软件开发">
<link href="https://edu.shuidilab.cn/static/public/img/shuidi_favicon.ico" rel="shortcut icon" type="image/x-icon">
<title>水滴实验营</title>
<link rel="stylesheet" href="./水滴实验营_files/font_877519_0ywdpr3rijo.css">
<link href="./水滴实验营_files/toastr.css" rel="stylesheet">
<link rel="stylesheet" href="./水滴实验营_files/desktop.19d8939c.css">
<script>
var ua = navigator.userAgent.toLowerCase();
var s;
(s = ua.match(/rv:([\d.]+)\) like gecko/)) ? s = parseFloat(s[1]) >= 11:
(s = ua.match(/msie ([\d.]+)/)) ? s = false :
(s = ua.match(/firefox\/([\d.]+)/)) ? s = parseFloat(s[1]) >= 30 :
(s = ua.match(/chrome\/([\d.]+)/)) ? s = parseFloat(s[1]) >= 28 :
(s = ua.match(/version\/([\d.]+).*safari/)) ? s = parseFloat(s[1]) >= 7 : false;
if (!s) {
window.location.href = '/msg/update-browser';
}
</script>
<script>
window.SDC = {"cas_url": "https://sso.shuidilab.cn/login?service=https://edu.shuidilab.cn/auth/?next=/slab/userpanel/", "cas_server_url": "https://sso.shuidilab.cn/", "slab_url": "https://edu.shuidilab.cn/", "tlab_url": "/", "mlab_url": "/", "realtime_num": 20, "proxyBase": "/api/proxy", "menuspread": true, "t": {"LANG": "zh-hans"}, "env": {"showSdcLink": true}, "websockets": ["RegionOne"], "msgsocket": "", "SOCKJS_URL": "wsconsole.shuidilab.cn/mcenter", "DATASET_SOCK_URL": "/ws", "vm_id": null, "guacHost": "wsconsole.shuidilab.cn/gws/", "sock_type": "wss", "domain": {"user_domain": "https://jn1.is.shanhe.com/shuidilab/", "pcourse_domain": "https://jn1.is.shanhe.com/shuidilab/", "vcourse_domain": "https://jn1.is.shanhe.com/shuidilab/", "icourse_domain": "https://jn1.is.shanhe.com/shuidilab/", "report_domain": "https://jn1.is.shanhe.com/shuidilab/", "step_domain": "https://jn1.is.shanhe.com/shuidilab/", "step_att_domain": "https://jn1.is.shanhe.com/shuidilab/", "idauth_att_domain": "https://jn1.is.shanhe.com/shuidilab/", "invite_domain": "https://jn1.is.shanhe.com/shuidilab/"}, "user": {"project_id": "", "name": "18247649623", "user_pic_path": "file/defaultavatar.png ", "email": "This_weiyuqing@qq.com", "nickname": "student20221107012836", "user_id": "805f8fa8-5e3b-11ed-aaad-0242ac110002", "mobile": "18247649623", "address": "", "industry": "", "manage_spec": {"allow_custom_template": 0}, "id": "9732", "auth_token": "df3fb84d-cd76-4b9c-9b13-20ce42f1a38e", "roles": ["student"], "isAdmin": true, "user_type": 10, "userquota": {"lab_env_count": {"value": 20, "type": "", "number": "", "enabled": true, "quota_name": "\u53ef\u521b\u5efa\u5b9e\u9a8c\u73af\u5883\u6570\u91cf", "unit": "count"}, "vclass_count": {"value": 20, "type": "", "number": "", "enabled": true, "quota_name": "\u53ef\u521b\u5efa\u865a\u62df\u8bfe\u5802\u6570\u91cf", "unit": "count"}, "stu_class_student_count": {"value": 200, "type": "", "number": "", "enabled": true, "quota_name": "\u73ed\u7ea7\u5b66\u751f\u6570\u91cf", "unit": "count"}, "vclass_student_count": {"value": 50, "type": "", "number": "", "enabled": true, "quota_name": "\u865a\u62df\u8bfe\u5802\u5b66\u751f\u6570\u91cf", "unit": "count"}, "study_spec_count": {"value": 1, "type": "", "number": "", "enabled": true, "quota_name": "\u53ef\u521b\u5efa\u4e3b\u673a\u6570", "unit": "count"}, "software_info_count": {"value": 10, "type": "", "number": "", "enabled": true, "quota_name": "\u53ef\u5b89\u88c5\u8f6f\u4ef6\u6570\u91cf", "unit": "count"}, "lab_template_count": {"value": 20, "type": "", "number": "", "enabled": true, "quota_name": "\u53ef\u521b\u5efa\u5b9e\u9a8c\u6a21\u677f\u6570\u91cf", "unit": "count"}}}}
t = SDC.t;
</script>
<link id="layuicss-layer" rel="stylesheet" href="./水滴实验营_files/layer.css" media="all"><script type="text/javascript" charset="utf-8" async="" data-requirecontext="_" data-requiremodule="layermsg" src="./水滴实验营_files/layer.js.下载"></script><link type="text/css" rel="stylesheet" href="./水滴实验营_files/katex.min.css"></head>
<body style="background: rgb(0, 0, 0);"><input type="hidden" name="csrfmiddlewaretoken" value="fHiwqGBdLHoEjvG2qrFLucrIAScoX6GUlyhJ3f170yHDY6lY3ZCUk2CrGwxHq34F"><style>
body{
overflow: hidden;
font-size: 12px;
}
body {
background: black
}
.topbar {
background: #222;
height: 22px;
position: relative;
overflow: hidden
}
.tip {
position: absolute;
top: 0;
width: 100%;
z-index: 2
}
.tip p {
padding: 3px 15px;
background: #658BA0;
color: white;
text-align: center;
width: 370px;
margin: 0 auto;
}
.pipe {
margin: 3px 0;
height: 1px;
background: #666
}
.dropdown {
width: 140px;
height: 22px;
z-index: 3
}
.message {
position: fixed;
left: 0;
top: 0;
width: 100%;
height: 22px;
color: #CEC17E;
line-height: 22px;
vertical-align: middle;
text-align: center;
display: none;
z-index: 0
}
.fullscreen {
position: fixed;
top: 2px;
right: 220px;
cursor: pointer;
display: block
}
.modal {
transform: translate(-50%, -50%);
}
.modal-header {
color: #000000;
background: #ebecef;
}
.modal-header .close {
color: #000000;
}
.form-horizontal .controls {
margin-right: 30px;
}
.mid-canvas {
display: block;
margin: 0 auto
}
input.dropdown-toggle {
height: 22px
}
.dropdown-text {
line-height: 22px;
border: 0 none
}
.dropdown-text::after {
top: 10px
}
.dropdown-content:hover, .dropdown-toggle:focus ~ .dropdown-content {
top: 24px
}
.dropdown-content {
top: 24px;
width: 140px;
}
#noVNC_screen {
position: absolute;
margin: 0px;
padding: 0px;
bottom: 0px;
top: 36px; /* the height of the control bar */
left: 0px;
right: 0px;
width: auto;
height: auto;
display: flex;
display: -webkit-flex;
align-items: center;
justify-content: center;
}
</style><div style="height: 100%;"><div class="console_residue_time hide" change-class="console_residue_time hide" style="display: none;"><div><span>00</span>:
<span>00</span>:
<span>00</span></div></div><div class="expDesktop clearfix"><div class="expDesktop_tool" style="right: 0px;"><div class="tools-toggle show_menu"><span title="隐藏工具" class="show-tools" avalon-events="click:eclick_0_events46desktop95tools95hide4041" style="display: block;"><img src="./水滴实验营_files/tools.png"></span><span title="显示工具" class="hide-tools" avalon-events="click:eclick_0_events46desktop95tools95show4041" style="display: none;"><img src="./水滴实验营_files/tools.png"></span></div><!--if--><div class="right-toolbar os-host os-theme-dark os-host-resize-disabled os-host-scrollbar-horizontal-hidden os-host-scrollbar-vertical-hidden os-host-transition"><div class="os-resize-observer-host"><div class="os-resize-observer observed" style="left: 0px; right: auto;"></div></div><div class="os-size-auto-observer" style="height: calc(100% + 1px); float: left;"><div class="os-resize-observer observed"></div></div><div class="os-content-glue" style="width: 139px; margin: 0px; height: 881px;"></div><div class="os-padding"><div class="os-viewport os-viewport-native-scrollbars-invisible" style="right: 0px; bottom: 0px;"><div class="os-content" style="padding: 0px; height: 100%; width: 100%;"><ul class="layui-nav layui-nav-tree tool_button" lay-filter="desktop"><li class="layui-nav-item layui-nav-itemed" style="display: none;"><a href="javascript:;">主机名<span class="layui-nav-more"></span></a><dl class="layui-nav-child"><!-- 二级菜单 --><!--ms-for:option in step.vm_name.data--><!--ms-for-end:--><dd><!--if--><!--if--></dd></dl></li><li class="layui-nav-item layui-nav-itemed" style="display: none;"><a href="javascript:;">实验<span class="layui-nav-more"></span></a><dl class="layui-nav-child"><!-- 二级菜单 --><!--ms-for:option in step.interacts.data--><!--ms-for-end:--></dl></li><li class="layui-nav-item layui-nav-itemed"><a href="javascript:;">操作<span class="layui-nav-more"></span></a><dl class="layui-nav-child"><!--ms-for:field in step.fields--><dd><button name="forced_close" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-play-circle" change-class="fa fa-play-circle"></i><span>强制关机</span></button></dd><!--for305209727019--><dd><button name="create" class="consoleRipple" change-class="consoleRipple"><i class="fa fa-play-circle" change-class="fa fa-play-circle"></i><span>创建</span></button></dd><!--for305209727019--><dd><button name="delay" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-clock-o" change-class="fa fa-clock-o"></i><span>延时</span></button></dd><!--for305209727019--><dd><button name="saveexp" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-save" change-class="fa fa-save"></i><span>保存实验</span></button></dd><!--for305209727019--><dd><button name="lookrecover" class="consoleRipple" change-class="consoleRipple"><i class="fa fa-cloud" change-class="fa fa-cloud"></i><span>恢复实验</span></button></dd><!--for305209727019--><dd><button name="help" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-share-alt" change-class="fa fa-share-alt"></i><span>请求协助</span></button></dd><!--for305209727019--><dd><button name="unhelp" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-share-square" change-class="fa fa-share-square"></i><span>取消协助</span></button></dd><!--for305209727019--><dd><button name="viewtype" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-columns" change-class="fa fa-columns"></i><span>显示方式</span></button></dd><!--for305209727019--><dd><button name="copytext" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-copy" change-class="fa fa-copy"></i><span></span></button></dd><!--for305209727019--><dd><button name="scrapbooking" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-scissors" change-class="fa fa-scissors"></i><span>剪贴板</span></button></dd><!--for305209727019--><dd><button name="fullscreen" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-arrows-alt" change-class="fa fa-arrows-alt"></i><span>全屏</span></button></dd><!--for305209727019--><dd><button name="refresh" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-refresh" change-class="fa fa-refresh"></i><span>刷新</span></button></dd><!--for305209727019--><dd><button name="close" class="hide consoleRipple" change-class="hide consoleRipple"><i class="fa fa-close" change-class="fa fa-close"></i><span>关闭</span></button></dd><!--for305209727019--><dd><button name="exception" class="consoleRipple" change-class="consoleRipple"><i class="fa fa-bug" change-class="fa fa-bug"></i><span>报告异常</span></button></dd><!--for305209727019--><!--ms-for-end:--></dl></li><span class="layui-nav-bar"></span></ul><ul class="layui-nav layui-nav-tree tool_button"><li class="layui-nav-item layui-nav-itemed" style="display: none;"><a href="javascript:;">扩展功能<span class="layui-nav-more"></span></a><dl class="layui-nav-child"><!-- 二级菜单 --><!--ms-for:option in step.extension.data--><dd change-class=""><!--if--></dd><!--for574639657597--><!--ms-for-end:--><!--if--><dd><!--if--></dd></dl></li><span class="layui-nav-bar"></span></ul><ul class="layui-nav layui-nav-tree tool_button" style="display: none"><li class="layui-nav-item"><a href="javascript:;">按键操作<span class="layui-nav-more"></span></a><dl class="layui-nav-child"><!-- 二级菜单 --><dd class="" id="sendCtrlAltDelButton"><button>Ctrl-Alt-Del</button></dd><dd class="" id="sendCtrlAltBackspaceButton"><button>Ctrl-Alt-Backspace</button></dd><dd class="" id="sendMemoryDumpButton"><button>RCtrl-Scroll-Scroll</button></dd><dd class="sendCtrlAltFunctionButton" data-n="1"><button>Ctrl-Alt-F1</button></dd><dd class="sendCtrlAltFunctionButton" data-n="2"><button>Ctrl-Alt-F2</button></dd><dd class="sendCtrlAltFunctionButton" data-n="3"><button>Ctrl-Alt-F3</button></dd><dd class="sendCtrlAltFunctionButton" data-n="4"><button>Ctrl-Alt-F4</button></dd><dd class="sendCtrlAltFunctionButton" data-n="5"><button>Ctrl-Alt-F5</button></dd><dd class="sendCtrlAltFunctionButton" data-n="6"><button>Ctrl-Alt-F6</button></dd><dd class="sendCtrlAltFunctionButton" data-n="7"><button>Ctrl-Alt-F7</button></dd><dd class="sendCtrlAltFunctionButton" data-n="8"><button>Ctrl-Alt-F8</button></dd><dd class="sendCtrlAltFunctionButton" data-n="9"><button>Ctrl-Alt-F9</button></dd><dd class="sendCtrlAltFunctionButton" data-n="10"><button>Ctrl-Alt-F10</button></dd><dd class="sendCtrlAltFunctionButton" data-n="11"><button>Ctrl-Alt-F11</button></dd></dl></li><span class="layui-nav-bar"></span></ul></div></div></div><div class="os-scrollbar os-scrollbar-horizontal os-scrollbar-unusable os-scrollbar-auto-hidden"><div class="os-scrollbar-track os-scrollbar-track-off"><div class="os-scrollbar-handle" style="width: 100%; transform: translate(0px, 0px);"></div></div></div><div class="os-scrollbar os-scrollbar-vertical os-scrollbar-unusable os-scrollbar-auto-hidden"><div class="os-scrollbar-track os-scrollbar-track-off"><div class="os-scrollbar-handle" style="height: 100%; transform: translate(0px, 0px);"></div></div></div><div class="os-scrollbar-corner"></div></div><div id="realtime_msg" data-placement="top-left"><span>消息</span><span style="margin-left: 6px;" id="msg_num" class="layui-badge">0</span></div></div><div id="editormd_view" class="expDesktop_editormd_box" style="width: 803px;"><div style="left: 777px; top: 182px;" class="editormd-toggle show_menu"><span title="移动图标" class="editormd-toggle-move"><img src="./水滴实验营_files/arrows_v.png"></span><span title="隐藏文档" class="layui-icon layui-icon-shrink-right show-editormd sd-font-awefontt" avalon-events="click:eclick_0_events46desktop95editormd95hide4041" style="display: block;"><!--
<img src="/static/public/img/desktop/edit.png" />
--></span><span class="layui-icon layui-icon-spread-left hide-editormd sd-font-awefontt" title="显示文档" change-class="layui-icon layui-icon-spread-left hide-editormd sd-font-awefontt" avalon-events="click:eclick_0_events46desktop95editormd95show4041" style="display: none;"><img style="display: none;" src="./水滴实验营_files/arrows_all.png" class="hide" change-class="hide"></span><span title="最大化" class="layui-icon layui-icon-layer maximize-editormd sd-font-awefontt sd-font-awefontt" avalon-events="click:eclick_0_events46desktop95editormd95maximize4041" style="display: block;"><!--
<img src="/static/public/img/desktop/arrows_all.png" />
--></span></div><div class="expDesktop_editormd" style="width: 803px; left: 0px;"><div class="shuidi-left-drag"></div><ul class="layui-nav layui-bg-cyan desktop_menu"><!--ms-for:(index,i) in doctabs--><li class="layui-nav-item layui-this" change-class="layui-this" avalon-events="click:eclick_0_events46changetabs40i44index41">文档</li><!--for682213154137--><li class="layui-nav-item" change-class="" avalon-events="click:eclick_0_events46changetabs40i44index41">评价</li><!--for682213154137--><li class="layui-nav-item" change-class="" avalon-events="click:eclick_0_events46changetabs40i44index41">我的报告</li><!--for682213154137--><li class="layui-nav-item" change-class="" avalon-events="click:eclick_0_events46changetabs40i44index41">随材</li><!--for682213154137--><li class="layui-nav-item" change-class="" avalon-events="click:eclick_0_events46changetabs40i44index41">视频</li><!--for682213154137--><li class="layui-nav-item" change-class="" avalon-events="click:eclick_0_events46changetabs40i44index41">文件</li><!--for682213154137--><!--ms-for-end:--><span class="layui-nav-bar"></span></ul><h4 class="expDesktop_title"><span title="基于集成学习的心电图诊断识别">基于集成学习的心电图诊断识别</span></h4><div class="expDesktop_editormd_console"><!--ms-for:(index,d) in doctabs--><div id="docmarkdown" style="height: 100%;"><div style="width: 100%;height: 100%;"><div style="width: 100%;height: 100%;overflow-y: auto"><div id="docmarkdown_doc" class="markdown-body editormd-html-preview"><h2 id="h2--"><a name="一 、模型集成" class="reference-link"></a><span class="header-link octicon octicon-link"></span>一 、模型集成</h2><p>集成学习先产生一组“个体学习器”,再用某种策略将它们结合起来。个体学习器通常由一个现有的学习算法从训练数据中产生。若集成中只包含同种类型的个体学习器,这样的集成是“同质”的,同质集成中的个体学习器称为“基学习器”。集成也可包含不同类型的个体学习器,这样的集成是“异质”的。异质集成中的个体学习器由不同的学习算法生成,这时就不再有基学习算法;相应的,个体学习器一般不称为基学习器,常称为“组件学习器”或直接称为个体学习器。<br>集成学习通过将多个学习器进行结合,常可获得比单一学习器显著优越的泛化性能。这对“弱学习器”尤为明显,因此集成学习的很多理论研究都是针对弱学习器进行的。在一般经验中,如果把好坏不等的东西掺到一起,那么通常结果会是比最坏的要好一些,比最好的要坏一些。集成学习把多个学习器结合起来,想要获得比最好的单一学习器更好的性能。<br>根据个体学习器的生成方式,目前的集成学习方法大致可分为两大类,即个体学习器间存在强依赖关系、必须串行生成的序列化方法,以及个体学习器间不存在强依赖关系、可同时生成的并行化方法。前者的代表是Boosting,后者的代表是Bagging和Random Forest。<br>基于ESBclassifier.py实现心电图诊断识别,文件目录/root/ecgpy/<br>注意:$ 符号是系统提示符,不用输入!<br>打开桌面版的terminal,输入代码如下,并执行:</p>
<pre class="prettyprint linenums prettyprinted" style=""><i class="document-copy fa fa-files-o" style="display: none;"></i><ol class="linenums"><li class="L0"><code class="lang-python"><span class="com">#打开文件路径</span></code></li><li class="L1"><code class="lang-python"><span class="pln">$cd </span><span class="pun">/</span><span class="pln">root</span><span class="pun">/</span><span class="pln">ecgpy</span></code></li><li class="L2"><code class="lang-python"><span class="com">#运行jupyter notebook</span></code></li><li class="L3"><code class="lang-python"><span class="pln">$jupyter</span><span class="pun">-</span><span class="pln">notebook </span><span class="pun">--</span><span class="pln">allow</span><span class="pun">-</span><span class="pln">root</span></code></li></ol></pre>
<p>新建python文档,输入以下代码并执行:</p>
<pre class="prettyprint linenums prettyprinted" style=""><i class="document-copy fa fa-files-o" style="display: none;"></i><ol class="linenums"><li class="L0"><code class="lang-python"><span class="com">#导入所需包</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">import</span><span class="pln"> numpy </span><span class="kwd">as</span><span class="pln"> np</span></code></li><li class="L2"><code class="lang-python"><span class="kwd">import</span><span class="pln"> pandas </span><span class="kwd">as</span><span class="pln"> pd</span></code></li><li class="L3"><code class="lang-python"><span class="kwd">import</span><span class="pln"> time</span></code></li><li class="L4"><code class="lang-python"></code></li><li class="L5"><code class="lang-python"><span class="kwd">from</span><span class="pln"> sklearn </span><span class="kwd">import</span><span class="pln"> svm</span></code></li><li class="L6"><code class="lang-python"><span class="kwd">from</span><span class="pln"> sklearn</span><span class="pun">.</span><span class="pln">tree </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">DecisionTreeClassifier</span></code></li><li class="L7"><code class="lang-python"><span class="kwd">from</span><span class="pln"> sklearn</span><span class="pun">.</span><span class="pln">ensemble </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">RandomForestClassifier</span><span class="pun">,</span><span class="pln"> </span><span class="typ">AdaBoostClassifier</span></code></li><li class="L8"><code class="lang-python"><span class="kwd">from</span><span class="pln"> sklearn</span><span class="pun">.</span><span class="pln">naive_bayes </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">GaussianNB</span><span class="pun">,</span><span class="pln"> </span><span class="typ">MultinomialNB</span><span class="pun">,</span><span class="pln"> </span><span class="typ">BernoulliNB</span></code></li><li class="L9"><code class="lang-python"><span class="kwd">from</span><span class="pln"> sklearn</span><span class="pun">.</span><span class="pln">linear_model </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">LogisticRegression</span></code></li><li class="L0"><code class="lang-python"><span class="kwd">from</span><span class="pln"> sklearn</span><span class="pun">.</span><span class="pln">neighbors </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">KNeighborsClassifier</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">from</span><span class="pln"> sklearn</span><span class="pun">.</span><span class="pln">neural_network </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">MLPClassifier</span></code></li><li class="L2"><code class="lang-python"><span class="kwd">from</span><span class="pln"> sklearn</span><span class="pun">.</span><span class="pln">ensemble </span><span class="kwd">import</span><span class="pln"> </span><span class="typ">VotingClassifier</span></code></li><li class="L3"><code class="lang-python"><span class="kwd">from</span><span class="pln"> sklearn</span><span class="pun">.</span><span class="pln">metrics </span><span class="kwd">import</span><span class="pln"> confusion_matrix</span></code></li><li class="L4"><code class="lang-python"><span class="kwd">import</span><span class="pln"> random</span></code></li><li class="L5"><code class="lang-python"><span class="com">#exec time: START</span></code></li><li class="L6"><code class="lang-python"><span class="pln">start_time</span><span class="pun">=</span><span class="pln">time</span><span class="pun">.</span><span class="pln">time</span><span class="pun">()</span></code></li><li class="L7"><code class="lang-python"><span class="com">#数据预处理</span></code></li><li class="L8"><code class="lang-python"><span class="com">############# Data generation and Preprocessing ###############</span></code></li><li class="L9"><code class="lang-python"><span class="kwd">def</span><span class="pln"> load_data</span><span class="pun">(</span><span class="pln">fea_file</span><span class="pun">):</span></code></li><li class="L0"><code class="lang-python"><span class="pln"> </span><span class="str">"""</span></code></li><li class="L1"><code class="lang-python"><span class="str"> Extract ecg data from txt file, divide data into training set and test set, separate feature list and labels.</span></code></li><li class="L2"><code class="lang-python"><span class="str"> :param fea_file: the path of the file to be loaded</span></code></li><li class="L3"><code class="lang-python"><span class="str"> :return train_labels, train_data, test_labels, test_data: list objects</span></code></li><li class="L4"><code class="lang-python"><span class="str"> """</span></code></li><li class="L5"><code class="lang-python"><span class="pln"> train_labels </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[]</span></code></li><li class="L6"><code class="lang-python"><span class="pln"> train_data </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[]</span></code></li><li class="L7"><code class="lang-python"><span class="pln"> test_labels </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[]</span></code></li><li class="L8"><code class="lang-python"><span class="pln"> test_data </span><span class="pun">=</span><span class="pln"> </span><span class="pun">[]</span></code></li><li class="L9"><code class="lang-python"></code></li><li class="L0"><code class="lang-python"><span class="pln"> file </span><span class="pun">=</span><span class="pln"> open</span><span class="pun">(</span><span class="pln">fea_file</span><span class="pun">,</span><span class="pln"> </span><span class="str">'r'</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="pln"> line </span><span class="pun">=</span><span class="pln"> file</span><span class="pun">.</span><span class="pln">readline</span><span class="pun">()</span></code></li><li class="L2"><code class="lang-python"></code></li><li class="L3"><code class="lang-python"><span class="pln"> </span><span class="kwd">while</span><span class="pln"> line</span><span class="pun">:</span></code></li><li class="L4"><code class="lang-python"><span class="pln"> temp </span><span class="pun">=</span><span class="pln"> line</span><span class="pun">.</span><span class="pln">split</span><span class="pun">(</span><span class="str">";"</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="pln"> temp_fea </span><span class="pun">=</span><span class="pln"> temp</span><span class="pun">[</span><span class="lit">2</span><span class="pun">].</span><span class="pln">split</span><span class="pun">(</span><span class="str">","</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="pln"> r </span><span class="pun">=</span><span class="pln"> random</span><span class="pun">.</span><span class="pln">randint</span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="pln"> </span><span class="lit">9</span><span class="pun">)</span></code></li><li class="L7"><code class="lang-python"><span class="pln"> </span><span class="kwd">if</span><span class="pln"> r </span><span class="pun">&gt;</span><span class="pln"> </span><span class="lit">1</span><span class="pun">:</span></code></li><li class="L8"><code class="lang-python"><span class="pln"> train_data</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="pln">temp_fea</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="pln"> train_labels</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="pln">temp</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span></code></li><li class="L0"><code class="lang-python"><span class="pln"> </span><span class="kwd">else</span><span class="pun">:</span></code></li><li class="L1"><code class="lang-python"><span class="pln"> test_data</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="pln">temp_fea</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="pln"> test_labels</span><span class="pun">.</span><span class="pln">append</span><span class="pun">(</span><span class="pln">temp</span><span class="pun">[</span><span class="lit">1</span><span class="pun">])</span></code></li><li class="L3"><code class="lang-python"></code></li><li class="L4"><code class="lang-python"><span class="pln"> line </span><span class="pun">=</span><span class="pln"> file</span><span class="pun">.</span><span class="pln">readline</span><span class="pun">()</span></code></li><li class="L5"><code class="lang-python"><span class="pln"> file</span><span class="pun">.</span><span class="pln">close</span><span class="pun">()</span></code></li><li class="L6"><code class="lang-python"><span class="pln"> train_data </span><span class="pun">=</span><span class="pln"> np</span><span class="pun">.</span><span class="pln">array</span><span class="pun">(</span><span class="pln">train_data</span><span class="pun">)</span></code></li><li class="L7"><code class="lang-python"><span class="pln"> train_data </span><span class="pun">=</span><span class="pln"> train_data</span><span class="pun">.</span><span class="pln">astype</span><span class="pun">(</span><span class="pln">float</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"><span class="pln"> train_labels </span><span class="pun">=</span><span class="pln"> np</span><span class="pun">.</span><span class="pln">array</span><span class="pun">(</span><span class="pln">train_labels</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="pln"> train_labels </span><span class="pun">=</span><span class="pln"> train_labels</span><span class="pun">.</span><span class="pln">astype</span><span class="pun">(</span><span class="pln">np</span><span class="pun">.</span><span class="pln">int64</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="pln"> test_data </span><span class="pun">=</span><span class="pln"> np</span><span class="pun">.</span><span class="pln">array</span><span class="pun">(</span><span class="pln">test_data</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="pln"> test_data </span><span class="pun">=</span><span class="pln"> test_data</span><span class="pun">.</span><span class="pln">astype</span><span class="pun">(</span><span class="pln">float</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="pln"> test_labels </span><span class="pun">=</span><span class="pln"> np</span><span class="pun">.</span><span class="pln">array</span><span class="pun">(</span><span class="pln">test_labels</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="pln"> test_labels </span><span class="pun">=</span><span class="pln"> test_labels</span><span class="pun">.</span><span class="pln">astype</span><span class="pun">(</span><span class="pln">np</span><span class="pun">.</span><span class="pln">int64</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="pln"> </span><span class="kwd">return</span><span class="pln"> train_data</span><span class="pun">,</span><span class="pln"> train_labels</span><span class="pun">,</span><span class="pln"> test_data</span><span class="pun">,</span><span class="pln"> test_labels</span></code></li><li class="L5"><code class="lang-python"></code></li><li class="L6"><code class="lang-python"><span class="pln">data_file </span><span class="pun">=</span><span class="pln"> </span><span class="str">'/root/ecgpy/NewCombined.txt'</span></code></li><li class="L7"><code class="lang-python"><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln"> trainData_y</span><span class="pun">,</span><span class="pln"> testData_x</span><span class="pun">,</span><span class="pln"> testData_y </span><span class="pun">=</span><span class="pln"> load_data</span><span class="pun">(</span><span class="pln">data_file</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"></code></li><li class="L9"><code class="lang-python"><span class="pln">confusionMatrix </span><span class="pun">=</span><span class="pln"> np</span><span class="pun">.</span><span class="pln">zeros</span><span class="pun">((</span><span class="lit">2</span><span class="pun">,</span><span class="pln"> </span><span class="lit">2</span><span class="pun">))</span></code></li><li class="L0"><code class="lang-python"><span class="com">#Logistic Regression Classifier</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"****Logistic Regression**** \n"</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="pln">LR</span><span class="pun">=</span><span class="typ">LogisticRegression</span><span class="pun">(</span><span class="pln">penalty</span><span class="pun">=</span><span class="str">'l2'</span><span class="pun">,</span><span class="pln"> dual</span><span class="pun">=</span><span class="kwd">False</span><span class="pun">,</span><span class="pln"> tol</span><span class="pun">=</span><span class="lit">0.00001</span><span class="pun">,</span><span class="pln"> C</span><span class="pun">=</span><span class="lit">1.0</span><span class="pun">,</span><span class="pln"> fit_intercept</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> intercept_scaling</span><span class="pun">=</span><span class="lit">1</span><span class="pun">,</span><span class="pln"> class_weight</span><span class="pun">=</span><span class="kwd">None</span><span class="pun">,</span><span class="pln"> random_state</span><span class="pun">=</span><span class="lit">200</span><span class="pun">,</span><span class="pln"> solver</span><span class="pun">=</span><span class="str">'liblinear'</span><span class="pun">,</span><span class="pln"> max_iter</span><span class="pun">=</span><span class="lit">100</span><span class="pun">,</span><span class="pln"> multi_class</span><span class="pun">=</span><span class="str">'ovr'</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="pln">LR</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">LR</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">LR</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L7"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"****Decision Tree**** \n"</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="pln">DT </span><span class="pun">=</span><span class="pln"> </span><span class="typ">DecisionTreeClassifier</span><span class="pun">(</span><span class="pln">max_depth</span><span class="pun">=</span><span class="lit">3</span><span class="pun">,</span><span class="pln">min_samples_leaf</span><span class="pun">=</span><span class="lit">1</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="pln">DT</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">DT</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">DT</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L7"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L8"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="com">#Support Vector Machine Classifier</span></code></li><li class="L4"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"****SVM**** \n"</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="pln">SVM1</span><span class="pun">=</span><span class="pln">svm</span><span class="pun">.</span><span class="pln">SVC</span><span class="pun">(</span><span class="pln">decision_function_shape</span><span class="pun">=</span><span class="str">'ovr'</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="pln">SVM1</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L7"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">SVM1</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">SVM1</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L0"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"****Naive Bayes**** \n"</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="pln">NB</span><span class="pun">=</span><span class="typ">BernoulliNB</span><span class="pln"> </span><span class="pun">()</span></code></li><li class="L7"><code class="lang-python"><span class="pln">NB</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">NB</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">NB</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="com">#Neural Network Classifier</span></code></li><li class="L7"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"****Neural Network**** \n"</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"><span class="pln">NN</span><span class="pun">=</span><span class="typ">MLPClassifier</span><span class="pun">(</span><span class="pln">activation</span><span class="pun">=</span><span class="str">'logistic'</span><span class="pun">,</span><span class="pln">solver</span><span class="pun">=</span><span class="str">'lbfgs'</span><span class="pun">,</span><span class="pln">hidden_layer_sizes</span><span class="pun">=(</span><span class="lit">10</span><span class="pun">,</span><span class="lit">2</span><span class="pun">),</span><span class="pln">momentum </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.9</span><span class="pun">,</span><span class="pln"> learning_rate</span><span class="pun">=</span><span class="str">'constant'</span><span class="pun">,</span><span class="pln"> learning_rate_init</span><span class="pun">=</span><span class="lit">0.001</span><span class="pun">,</span><span class="pln"> early_stopping</span><span class="pun">=</span><span class="kwd">True</span><span class="pun">,</span><span class="pln"> random_state</span><span class="pun">=</span><span class="lit">200</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="pln">NN</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">NN</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">NN</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L3"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L7"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"><span class="com">#K-Nearest Neighbors Classifier</span></code></li><li class="L9"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"****K-nearest neighbors**** \n"</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="pln">KNN</span><span class="pun">=</span><span class="typ">KNeighborsClassifier</span><span class="pun">(</span><span class="pln">n_neighbors</span><span class="pun">=</span><span class="lit">2</span><span class="pun">,</span><span class="pln">weights</span><span class="pun">=</span><span class="str">"uniform"</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="pln">KNN</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">KNN</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">KNN</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L5"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L7"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li></ol></pre>
<h3 id="h3-1-boosting"><a name="1.Boosting" class="reference-link"></a><span class="header-link octicon octicon-link"></span>1.Boosting</h3><p>Boosting是一族可将弱学习器提升为强学习器的算法,这族算法的工作机制类似:先从初始训练集训练出一个基学习器,再根据基学习器的表现对训练样本分布进行调整,使得先前基学习器做错的训练样本再后续收到更多关注,然后基于调整后的样本分布来训练下一个基学习器。如此重复进行,直至基学习器数目达到事先指定的值T,最终将这T个基学习器进行加权结合。Boosting族算法最著名的代表是AdaBoost:</p>
<pre class="prettyprint linenums prettyprinted" style=""><i class="document-copy fa fa-files-o" style="display:none"></i><ol class="linenums"><li class="L0"><code class="lang-python"><span class="com">#AdaBoost Classifier</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"********TASK 1.1: ADA BOOST CLASSIFIER******** \n"</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="pln">AB</span><span class="pun">=</span><span class="typ">AdaBoostClassifier</span><span class="pun">(</span><span class="typ">DecisionTreeClassifier</span><span class="pun">(</span><span class="pln">max_depth</span><span class="pun">=</span><span class="lit">1</span><span class="pun">,</span><span class="pln">min_samples_leaf</span><span class="pun">=</span><span class="lit">1</span><span class="pun">),</span><span class="pln">n_estimators</span><span class="pun">=</span><span class="lit">11</span><span class="pun">,</span><span class="pln">learning_rate</span><span class="pun">=</span><span class="lit">1.1</span><span class="pun">,</span><span class="pln">random_state</span><span class="pun">=</span><span class="lit">200</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="pln">AB</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">AB</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">AB</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L7"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li></ol></pre>
<p>运行结果如图:<br><img src="./水滴实验营_files/bab98cc28e1547dfbdb79b15773240af4334462.png" alt=""></p>
<h5 id="h5--"><a name="框架参数:" class="reference-link"></a><span class="header-link octicon octicon-link"></span>框架参数:</h5><h5 id="h5-base_estimator-"><a name="base_estimator:" class="reference-link"></a><span class="header-link octicon octicon-link"></span>base_estimator:</h5><p>即我们的弱分类学习器理论上可以选择任何一个分类或者回归学习器,不过需要支持样本权重。我们常用的一般是CART决策树或者神经网络MLP。默认是决策树</p>
<h5 id="h5-algorithm-"><a name="algorithm:" class="reference-link"></a><span class="header-link octicon octicon-link"></span>algorithm:</h5><p>这个参数只有AdaBoostClassifier有。主要原因是scikit-learn实现了两种Adaboost分类算法,SAMME和SAMME.R。两者的主要区别是弱学习器权重的度量,SAMME用对样本集分类效果作为弱学习器权重,而SAMME.R使用了对样本集分类的预测概率大小来作为弱学习器权重。</p>
<h5 id="h5-n_estimators-"><a name="n_estimators:" class="reference-link"></a><span class="header-link octicon octicon-link"></span>n_estimators:</h5><p>就是我们的弱学习器的最大迭代次数,或者说最大的弱学习器的个数。一般来说n_estimators太小,容易欠拟合,n_estimators太大,又容易过拟合,一般选择一个适中的数值。默认是50。在实际调参的过程中,我们常常将n_estimators和下面介绍的参数learning_rate一起考虑。</p>
<h5 id="h5-learning_rate-"><a name="learning_rate:" class="reference-link"></a><span class="header-link octicon octicon-link"></span>learning_rate:</h5><p>即每个弱学习器的权重缩减系数ν,加上了正则化项,我们的强学习器的迭代公式为fk(x)=fk−1(x)+ναkGk(x)。ν的取值范围为0&lt;ν≤1。对于同样的训练集拟合效果,较小的ν意味着我们需要更多的弱学习器的迭代次数。通常我们用步长和迭代最大次数一起来决定算法的拟合效果。所以这两个参数n_estimators和learning_rate要一起调参。一般来说,可以从一个小一点的ν开始调参,默认是1。</p>
<h3 id="h3-2-bagging-random-forest"><a name="2.Bagging与Random Forest" class="reference-link"></a><span class="header-link octicon octicon-link"></span>2.Bagging与Random Forest</h3><p>想得到泛化能力强的集成,集成中的个体学习器应尽可能相互独立。虽然“独立”在现实任务中无法做到,但可以设法使基学习器尽可能具有较大的差异。一种可能的做法是对训练样本进行采样,产生出若干个不同的子集,再从每个数据子集中训练出一个基学习器。这样,由于训练数据不同,我们获得的基学习器可以具有比较大的差异。<br>Bagging是并行式集成学习方法最著名的代表。给定包含m个样本的数据集,我们先随机选出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时该样本仍有可能被选中,这样,经过m次随机采样操作,我们得到含m个样本的样本集。我们可采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基学习器,再将这些基学习器进行结合。这就是Bagging的基本流程。在对预测输出进行结合时,Bagging通常对分类任务使用简单投票法,对回归任务使用简单平均法。<br>随机森林(Random Forest)是Bagging的一个扩展变体。在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。具体地,传统决策树在选择划分属性时是在当前节点的属性集合中选择一个最优属性;而在RF中,对基决策树的每个结点,先从该结点的属性集合中随机选择一个包含k个属性的子集,然后再从这个子集中选择一个最优属性用于划分。随机森林简单,容易实现,计算开销小,令人惊奇的是,它在很多现实任务中展现出强大的性能,被誉为“代表集成学习技术水平的方法”。值得一提的是,随机森林的训练效率常常优于Bagging。因为在个体决策树的构建过程中,Bagging使用的是“确定型”决策树,在选择划分属性时要对结点的所有属性进行考察,而随机森林使用的“随机型”决策树则只需考察一个属性子集。</p>
<pre class="prettyprint linenums prettyprinted" style=""><i class="document-copy fa fa-files-o" style="display:none"></i><ol class="linenums"><li class="L0"><code class="lang-python"><span class="com">#Random forest classifier</span></code></li><li class="L1"><code class="lang-python"></code></li><li class="L2"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"********TASK 1.2: RANDOM FOREST CLASSIFIER******** \n"</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="pln">RF </span><span class="pun">=</span><span class="pln"> </span><span class="typ">RandomForestClassifier</span><span class="pun">(</span><span class="pln">max_depth</span><span class="pun">=</span><span class="lit">4</span><span class="pun">,</span><span class="pln"> n_estimators</span><span class="pun">=</span><span class="lit">10</span><span class="pun">,</span><span class="pln">random_state</span><span class="pun">=</span><span class="lit">200</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="pln">RF</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">RF</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">RF</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L7"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L8"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li></ol></pre>
<p>运行结果如图:<br><img src="./水滴实验营_files/bab98cc28e1547dfbdb79b15773240af0587081.png" alt=""></p>
<h3 id="h3-3-"><a name="3.结合策略" class="reference-link"></a><span class="header-link octicon octicon-link"></span>3.结合策略</h3><p>学习器结合可能会从三个方面带来好处:1、从统计的方面来看,由于学习任务的假设空间往往很大,可能有多个假设在训练集上达到同等性能,此时若使用单学习器可能因误选而导致泛化性能不佳,结合多个学习器则会减少这一风险。2、从计算的方面来看,学习算法往往会陷入局部极小,有的局部极小点所对应的泛化性能可能很糟糕,而通过多次运行之后进行结合,可降低陷入糟糕局部极小点的风险。3、从表示的方面来看,某些学习任务的真实假设可能不在当前学习算法所考虑的假设空间中,此时若使用单学习器则肯定无效,而通过结合多个学习器,由于相应的假设空间有所扩大,有可能学得更好的近似。<br>集成包含T个基学习器的策略有如下几种:</p>
<h4 id="h4--1-"><a name="(1)平均法" class="reference-link"></a><span class="header-link octicon octicon-link"></span>(1)平均法</h4><p>对数值型输出常用结合策略是使用平均法<br>简单平均法:<img src="./水滴实验营_files/bab98cc28e1547dfbdb79b15773240af2293841.png" alt=""><br>加权平均法:要求权重非负且和为1<br><img src="./水滴实验营_files/bab98cc28e1547dfbdb79b15773240af1585653.png" alt=""><br>一般,个体学习器性能相差较大时使用加权平均,性能相近时使用简单平均法(例:可以用测试集准确率判断性能)。</p>
<h4 id="h4--2-"><a name="(2)投票法" class="reference-link"></a><span class="header-link octicon octicon-link"></span>(2)投票法</h4><p>对分类任务来说,学习器将从类别标记集合中预测出一个标记,最常见的结合策略是使用投票法。<br>绝对多数投票法:若某标记得票过半,则预测为该标记;否则拒绝预测。(在可靠性要求较高的学习任务中很有效)<br>相对多数投票法:预测为得票最多的标记,若同时有多个标记获得最高票,则从中随机选取一个。</p>
<p>不同类型个体学习器可能产生不同类型的输出值:使用类标记的投票称“硬投票”;使用类概率的投票称“软投票”,相当于对后验概率的一个估计。基学习器类型不同,其类概率值不能直接进行比较,通常将类概率输出转化为类标记输出(例:将类概率输出最大设为1,其他设为0)然后再投票。</p>
<h4 id="h4--3-"><a name="(3)学习法" class="reference-link"></a><span class="header-link octicon octicon-link"></span>(3)学习法</h4><p>当训练数据很多时,一种更为强大的结合策略是使用“学习法”,即通过另一个学习器来进行结合。Stacking是典型代表,个体学习器称为初级学习器,用于结合的学习器称为次级学习器或元学习器。基本思想:先从初始数据集训练出初级学习器,然后将初始学习器的输出作为特征(一般采用留一法或交叉验证法,使用训练初级学习器未使用到的样本来产生次级学习器的样本)与相对应的初始训练集的标记组合为新的数据集用于训练次级学习器。</p>
<pre class="prettyprint linenums prettyprinted" style=""><i class="document-copy fa fa-files-o" style="display:none"></i><ol class="linenums"><li class="L0"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"********TASK 2.1: VOTING CLASSIFIER: UNWEIGHTED******** \n"</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="pln">VCU</span><span class="pun">=</span><span class="typ">VotingClassifier</span><span class="pun">(</span><span class="pln">estimators</span><span class="pun">=[(</span><span class="str">'gnb'</span><span class="pun">,</span><span class="pln">NB</span><span class="pun">),(</span><span class="str">'lr'</span><span class="pun">,</span><span class="pln">LR</span><span class="pun">),(</span><span class="str">'dt'</span><span class="pun">,</span><span class="pln">DT</span><span class="pun">),(</span><span class="str">'knn'</span><span class="pun">,</span><span class="pln">KNN</span><span class="pun">),(</span><span class="str">'mlp'</span><span class="pun">,</span><span class="pln">NN</span><span class="pun">)],</span><span class="pln"> voting </span><span class="pun">=</span><span class="pln"> </span><span class="str">'soft'</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="pln">VCU</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">VCU</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">VCU</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L6"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L7"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L8"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li></ol></pre>
<p>运行结果如图:<br><img src="./水滴实验营_files/bab98cc28e1547dfbdb79b15773240af8228552.png" alt=""></p>
<pre class="prettyprint linenums prettyprinted" style=""><i class="document-copy fa fa-files-o" style="display:none"></i><ol class="linenums"><li class="L0"><code class="lang-python"><span class="com">#Unweighted Majority Voting Classifier including Random Forest and AdaBoost</span></code></li><li class="L1"><code class="lang-python"></code></li><li class="L2"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">"********TASK 3.1: VOTING CLASSIFIER: UNWEIGHTED******** \n"</span><span class="pun">)</span></code></li><li class="L3"><code class="lang-python"><span class="pln">VCU2</span><span class="pun">=</span><span class="typ">VotingClassifier</span><span class="pun">(</span><span class="pln">estimators</span><span class="pun">=[(</span><span class="str">'gnb'</span><span class="pun">,</span><span class="pln">NB</span><span class="pun">),(</span><span class="str">'lr'</span><span class="pun">,</span><span class="pln">LR</span><span class="pun">),(</span><span class="str">'dt'</span><span class="pun">,</span><span class="pln">DT</span><span class="pun">),(</span><span class="str">'knn'</span><span class="pun">,</span><span class="pln">KNN</span><span class="pun">),(</span><span class="str">'mlp'</span><span class="pun">,</span><span class="pln">NN</span><span class="pun">),(</span><span class="str">'rf'</span><span class="pun">,</span><span class="pln">RF</span><span class="pun">),(</span><span class="str">'ab'</span><span class="pun">,</span><span class="pln">AB</span><span class="pun">)],</span><span class="pln"> voting </span><span class="pun">=</span><span class="pln"> </span><span class="str">'soft'</span><span class="pun">)</span></code></li><li class="L4"><code class="lang-python"><span class="pln">VCU2</span><span class="pun">.</span><span class="pln">fit</span><span class="pun">(</span><span class="pln">trainData_x</span><span class="pun">,</span><span class="pln">trainData_y</span><span class="pun">)</span></code></li><li class="L5"><code class="lang-python"><span class="pln">predict</span><span class="pun">=</span><span class="pln">VCU2</span><span class="pun">.</span><span class="pln">predict</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">)</span></code></li><li class="L6"><code class="lang-python"><span class="pln">score</span><span class="pun">=</span><span class="pln">VCU2</span><span class="pun">.</span><span class="pln">score</span><span class="pun">(</span><span class="pln">testData_x</span><span class="pun">,</span><span class="pln">testData_y</span><span class="pun">)</span></code></li><li class="L7"><code class="lang-python"><span class="pln">S</span><span class="pun">=</span><span class="str">'Overall Accuracy: '</span><span class="pln"> </span><span class="pun">+</span><span class="pln">repr</span><span class="pun">(</span><span class="pln">score</span><span class="pun">*</span><span class="lit">100</span><span class="pun">)+</span><span class="str">' %'</span><span class="pun">+</span><span class="str">'\n'</span></code></li><li class="L8"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">S</span><span class="pun">)</span></code></li><li class="L9"><code class="lang-python"><span class="pln">confusionMatrix</span><span class="pun">=</span><span class="pln">confusion_matrix</span><span class="pun">(</span><span class="pln">testData_y</span><span class="pun">,</span><span class="pln">predict</span><span class="pun">)</span></code></li><li class="L0"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'Confusion Matrix: '</span><span class="pun">)</span></code></li><li class="L1"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="pln">confusionMatrix</span><span class="pun">)</span></code></li><li class="L2"><code class="lang-python"><span class="kwd">print</span><span class="pun">(</span><span class="str">'\n'</span><span class="pun">)</span></code></li></ol></pre>
<p>运行结果如图:<br><img src="./水滴实验营_files/bab98cc28e1547dfbdb79b15773240af9526485.png" alt=""></p>
<h2 id="h2--"><a name="二 、小结" class="reference-link"></a><span class="header-link octicon octicon-link"></span>二 、小结</h2><p>该实验针对不同“个体学习器”,采用不同策略结合,进行心电数据诊断识别。</p>
</div></div></div></div><!--for025197357332--><div id="evaluation" style="display: none;"><!--if--><div class="qc-desktop-com"><div class="comment"><div style="border: 1px solid rgb(204, 204, 204); padding-left: 10px; border-radius: 4px; margin-bottom: 10px; height: 45px; box-shadow: rgb(221, 221, 221) 0px 0px 2px 2px;"><p style="font-size: 12px;">给实验评分</p><span>:</span><span id="exp_course_score"></span></div><!--if--><div class="commentBtn"><p id="evaluate_tip"></p><input type="button" value="发表" name="send_comment" avalon-events="click:eclick_0_events46send95comment"></div></div><div class="avatarListWrap" style="height: auto; overflow-y: auto;"><div class="avatarList"><p class="avatarList-nocomment">暂无评论</p></div><!--ms-for:c in course_evaluate.comment_list | limitBy(100)--><!--ms-for-end:--><p style="margin-right: 20px;" class="qc-paging" id="expdesltop_view_data_page"></p></div></div><!--if--><!-- 随材管理 --><div style="display: none;"><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">暂无实验随材</div><!--if--></div><!-- 视频管理 --><div style="display: none;"><!--if--></div><!-- 代码管理 --><div style="display: none; padding: 10px;"><input type="file" id="guac_upload_file" style="opacity: 0; width: 0px;"><!--if--><!--
<button ms-if="show_vm.code_data" style="margin:10px;width:100px;background-color:#0dc49b"
ms-on-click="events.code_upload()" class="layui-btn">
上传文件
</button>
--><!--if--><!--if--><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">实验环境尚未启动,无法上传/下载文件</div><!--if--><!--
<div ms-if="show_vm.code_data&&show_vm.show" class="trying-to-load">
<div class="load-container load1">
<div class="loader">Loading...</div>
</div>
</div>
<div style="padding:20px 10px 10px;text-align: center;color:#666;font-size: 14px;" ms-if="show_vm.title"
ms-html="show_vm.title"></div>
<div ms-if="d.type=='code'&&!show_vm.show" style="padding: 5px">
<table style="margin:0" class="create-materials-table" ms-if="step_code_list.length !=0">
<tr>
<th>文件名称</th>
<th>大小(KB)</th>
</tr>
<tr ms-for="(index, val) in @step_code_list">
<td>
<a ms-if = "val.filesize >0" style="color: #00a5c1;cursor:pointer" ms-attr="{href:val.href,download:val.filename}"
ms-html="val.filename"></a>
<a ms-if = "val.filesize ==0 || val.filesize <0" style="color: #00a5c1;cursor:pointer"
ms-html="val.filename"></a>
</td>
<td ms-html="val.filesize"></td>
</tr>
</table>
</div>
--></div></div><!--for025197357332--><div id="report" style="display: none;"><!--if--><!--if--><div id="report_data_form" class="qc-desktop-com"><div id="course"><!--ms-for:field in fields_report--><div class="icode-form-group clearfix"><p style="font-size: 14px;"><label>完成情况</label><!--ms-for:val in field.data--><label><input type="radio" checked="" name="radio" value="0" avalon-events="change:echange_0_events46completionFun40val46value41"><span>全部完成</span></label><!--for501187188761--><label><input type="radio" name="radio" value="1" avalon-events="change:echange_0_events46completionFun40val46value41"><span>部分完成</span></label><!--for501187188761--><label><input type="radio" name="radio" value="2" avalon-events="change:echange_0_events46completionFun40val46value41"><span>未完成</span></label><!--for501187188761--><!--ms-for-end:--></p><!--if--></div><!--for978354781262--><div class="icode-form-group clearfix"><!--if--><div style="margin: 0px 28px 0px 20px;" class="ueditor row" change-class="row "><div class="layui-upload"><button type="button" class="layui-btn layui-btn-normal" style="padding: 2px; width: 64px; height: 24px; line-height: 24px; margin: 0px;" id="testList" change-class="">附件上传</button><div class="layui-upload-list"><table class="layui-table" id="report_attachment" style="overflow: auto; max-height: 200px;"><thead><tr><th>文件名</th><th>大小</th><th>状态</th><th>操作</th></tr></thead><tbody id="demoList"><!--ms-for:val in report_data.attach_list--><!--ms-for-end:--></tbody></table></div><div id="testListAction"></div></div><label class="checkLabel" style="font-size: 14px; margin-left: 0px; margin-bottom: 10px;">报告内容</label><!--if--><script type="text/plain" style="width: 0px; height: 500px;" id="content"></script><!--if--></div></div><!--for978354781262--><!--ms-for-end:--><div style="height: 60px; display: flex; justify-content: center; align-items: center;"><!--if--><button class="layui-btn layui-btn-primary" change-class="layui-btn layui-btn-primary " avalon-events="click:eclick_0_events46save95report4041">保存</button><button class="layui-btn" change-class="layui-btn " avalon-events="click:eclick_0_events46submit95report4041">提交</button></div><!-- style ="background-color:ccc;color:#fff" --></div></div><!-- 随材管理 --><div style="display: none;"><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">暂无实验随材</div><!--if--></div><!-- 视频管理 --><div style="display: none;"><!--if--></div><!-- 代码管理 --><div style="display: none; padding: 10px;"><input type="file" id="guac_upload_file" style="opacity: 0; width: 0px;"><!--if--><!--
<button ms-if="show_vm.code_data" style="margin:10px;width:100px;background-color:#0dc49b"
ms-on-click="events.code_upload()" class="layui-btn">
上传文件
</button>
--><!--if--><!--if--><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">实验环境尚未启动,无法上传/下载文件</div><!--if--><!--
<div ms-if="show_vm.code_data&&show_vm.show" class="trying-to-load">
<div class="load-container load1">
<div class="loader">Loading...</div>
</div>
</div>
<div style="padding:20px 10px 10px;text-align: center;color:#666;font-size: 14px;" ms-if="show_vm.title"
ms-html="show_vm.title"></div>
<div ms-if="d.type=='code'&&!show_vm.show" style="padding: 5px">
<table style="margin:0" class="create-materials-table" ms-if="step_code_list.length !=0">
<tr>
<th>文件名称</th>
<th>大小(KB)</th>
</tr>
<tr ms-for="(index, val) in @step_code_list">
<td>
<a ms-if = "val.filesize >0" style="color: #00a5c1;cursor:pointer" ms-attr="{href:val.href,download:val.filename}"
ms-html="val.filename"></a>
<a ms-if = "val.filesize ==0 || val.filesize <0" style="color: #00a5c1;cursor:pointer"
ms-html="val.filename"></a>
</td>
<td ms-html="val.filesize"></td>
</tr>
</table>
</div>
--></div></div><!--for025197357332--><div id="material" style="display: none;"><!--if--><!--if--><!--if--><!-- 随材管理 --><div style="display: none;"><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">暂无实验随材</div><div style="padding: 5px;"><!--if--></div></div><!-- 视频管理 --><div style="display: none;"><!--if--></div><!-- 代码管理 --><div style="display: none; padding: 10px;"><input type="file" id="guac_upload_file" style="opacity: 0; width: 0px;"><!--if--><!--
<button ms-if="show_vm.code_data" style="margin:10px;width:100px;background-color:#0dc49b"
ms-on-click="events.code_upload()" class="layui-btn">
上传文件
</button>
--><!--if--><!--if--><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">实验环境尚未启动,无法上传/下载文件</div><!--if--><!--
<div ms-if="show_vm.code_data&&show_vm.show" class="trying-to-load">
<div class="load-container load1">
<div class="loader">Loading...</div>
</div>
</div>
<div style="padding:20px 10px 10px;text-align: center;color:#666;font-size: 14px;" ms-if="show_vm.title"
ms-html="show_vm.title"></div>
<div ms-if="d.type=='code'&&!show_vm.show" style="padding: 5px">
<table style="margin:0" class="create-materials-table" ms-if="step_code_list.length !=0">
<tr>
<th>文件名称</th>
<th>大小(KB)</th>
</tr>
<tr ms-for="(index, val) in @step_code_list">
<td>
<a ms-if = "val.filesize >0" style="color: #00a5c1;cursor:pointer" ms-attr="{href:val.href,download:val.filename}"
ms-html="val.filename"></a>
<a ms-if = "val.filesize ==0 || val.filesize <0" style="color: #00a5c1;cursor:pointer"
ms-html="val.filename"></a>
</td>
<td ms-html="val.filesize"></td>
</tr>
</table>
</div>
--></div></div><!--for025197357332--><div id="video" style="display: none;"><!--if--><!--if--><!--if--><!-- 随材管理 --><div style="display: none;"><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">暂无实验随材</div><!--if--></div><!-- 视频管理 --><div style="display: none;"><div class="video_manage" style="padding: 5px;"><!--if--><div class="notdata"><img src="./水滴实验营_files/notdata.png">
暂无视频
</div></div></div><!-- 代码管理 --><div style="display: none; padding: 10px;"><input type="file" id="guac_upload_file" style="opacity: 0; width: 0px;"><!--if--><!--
<button ms-if="show_vm.code_data" style="margin:10px;width:100px;background-color:#0dc49b"
ms-on-click="events.code_upload()" class="layui-btn">
上传文件
</button>
--><!--if--><!--if--><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">实验环境尚未启动,无法上传/下载文件</div><!--if--><!--
<div ms-if="show_vm.code_data&&show_vm.show" class="trying-to-load">
<div class="load-container load1">
<div class="loader">Loading...</div>
</div>
</div>
<div style="padding:20px 10px 10px;text-align: center;color:#666;font-size: 14px;" ms-if="show_vm.title"
ms-html="show_vm.title"></div>
<div ms-if="d.type=='code'&&!show_vm.show" style="padding: 5px">
<table style="margin:0" class="create-materials-table" ms-if="step_code_list.length !=0">
<tr>
<th>文件名称</th>
<th>大小(KB)</th>
</tr>
<tr ms-for="(index, val) in @step_code_list">
<td>
<a ms-if = "val.filesize >0" style="color: #00a5c1;cursor:pointer" ms-attr="{href:val.href,download:val.filename}"
ms-html="val.filename"></a>
<a ms-if = "val.filesize ==0 || val.filesize <0" style="color: #00a5c1;cursor:pointer"
ms-html="val.filename"></a>
</td>
<td ms-html="val.filesize"></td>
</tr>
</table>
</div>
--></div></div><!--for025197357332--><div id="file" style="display: none;"><!--if--><!--if--><!--if--><!-- 随材管理 --><div style="display: none;"><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">暂无实验随材</div><!--if--></div><!-- 视频管理 --><div style="display: none;"><!--if--></div><!-- 代码管理 --><div style="display: none; padding: 10px;"><input type="file" id="guac_upload_file" style="opacity: 0; width: 0px;"><!--if--><!--
<button ms-if="show_vm.code_data" style="margin:10px;width:100px;background-color:#0dc49b"
ms-on-click="events.code_upload()" class="layui-btn">
上传文件
</button>
--><!--if--><!--if--><div style="padding: 20px 10px 10px; text-align: center; color: rgb(102, 102, 102); font-size: 14px;">实验环境尚未启动,无法上传/下载文件</div><!--if--><!--
<div ms-if="show_vm.code_data&&show_vm.show" class="trying-to-load">
<div class="load-container load1">
<div class="loader">Loading...</div>
</div>
</div>
<div style="padding:20px 10px 10px;text-align: center;color:#666;font-size: 14px;" ms-if="show_vm.title"
ms-html="show_vm.title"></div>
<div ms-if="d.type=='code'&&!show_vm.show" style="padding: 5px">
<table style="margin:0" class="create-materials-table" ms-if="step_code_list.length !=0">
<tr>
<th>文件名称</th>
<th>大小(KB)</th>
</tr>
<tr ms-for="(index, val) in @step_code_list">
<td>
<a ms-if = "val.filesize >0" style="color: #00a5c1;cursor:pointer" ms-attr="{href:val.href,download:val.filename}"
ms-html="val.filename"></a>
<a ms-if = "val.filesize ==0 || val.filesize <0" style="color: #00a5c1;cursor:pointer"
ms-html="val.filename"></a>
</td>
<td ms-html="val.filesize"></td>
</tr>
</table>
</div>
--></div></div><!--for025197357332--><!--ms-for-end:--></div></div></div><div class="expDesktop_con"><div id="vm_progress" class="hide" change-class="hide"><canvas style="width:90px;height:90px;" id="c"></canvas><input class="hide" type="range" id="r" min="0" max="100" value="0"></div><div class="console_bg_img" change-class=""><img src="./水滴实验营_files/console_bg_img.png"></div><div class="expDesktop_con_wrap clearfix"><div class="fl videoCon" id="displayvm" style="position: relative; height: 956px;"><div id="display" class="ui-layout-center"></div><div class="container"><!-- HTML5 Canvas --><div id="noVNC_screen" style="display:none"><canvas id="noVNC_canvas" class="mid-canvas" width="0" height="0">
Canvas not supported.
</canvas></div><div class="window-overlay" style="display:none"><div class="modal"><div class="modal-header"><h4>
复制粘贴命令
<a class="close"><span class="icon-close icon-Large"></span></a></h4></div><div class="modal-content"><form class="form form-horizontal"><fieldset><div class="modal-content alert alert-danger"><h6>将内容粘贴至文本框中,最大支持2000个字符,暂不支持中文等非标准键盘值特殊字符。</h6></div><div class="item"><div class="control-label">文本内容</div><div class="controls"><textarea class="copyText" rows="10" cols="50" maxlength="2000" name="copyText"></textarea></div></div><div class="form-actions"><input class="btn btn-primary" type="submit" value="提交"><input class="btn btn-cancel" type="button" value="取消"></div></fieldset></form></div></div></div></div><div id="displaynotebook" class="ui-layout-center"><iframe class="interact-notebook" id="interact-notebook" src="./水滴实验营_files/saved_resource.html"></iframe></div></div></div></div></div><div id="toolbar-options" class="hidden"><a title="复制" href="https://edu.shuidilab.cn/console/expdesktop/5668#" name="textcopy"><img style="width: 22px;height: 20px;margin-top: 0px;margin-left: -1px;" src="./水滴实验营_files/copytext.png" alt="复制"></a></div><button id="btntoolbar" style="position: absolute; left: -99999px; top: 0px;"></button></div><script src="./水滴实验营_files/require.min.js.下载"></script><script async="" src="./水滴实验营_files/main-console.min.98fbde9e.js.下载"></script><div class="tool-container tool-bottom toolbar-primary" style="opacity: 0; display: none; top: -80px;"><div class="tool-items"><a title="复制" href="https://edu.shuidilab.cn/console/expdesktop/5668#" name="textcopy" class="tool-item"><img style="width: 22px;height: 20px;margin-top: 0px;margin-left: -1px;" src="./水滴实验营_files/copytext.png" alt="复制"></a></div><div class="arrow"></div></div></body></html>