自己练手的小项目——EGG数据管理Java web
提示:主要时数据分析、图像处理、图像识别相关技术案例,班门弄斧了
前言
功能:建立病人信息,可视化脑电波数据、建立tensorflow模型,自动类型。
一、EGG数据模式识别
EGG是多点脑电波数据,根据不同状态下采集的数据标记类别,python语言tensorflow学习平台下建立了识别模型。
二、EGG数据管理平台
建立病人EGG数据档案管理平台,利用tensorflow-js将python中训练好的模型进行识别,附加一定管理功能。
三、模型训练
1.main.py
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn import preprocessing
import tensorboard
import tensorflowjs as tfjs
from eeg import CNNModel
import tensorflow as tf
#进行数据处理由于原先的数据为六类,现在将数据变为二分类问题
data = "./data.csv"
df = pd.read_csv(data, header=0, index_col=0)
df["epilepsy"] = 0
for i in range(11500):
if df["y"][i] == 1:
df["epilepsy"][i] = 1
else:
df["epilepsy"][i] = 0
x = df.drop('y',axis=1)
x = x.drop('epilepsy',axis=1)
y = df['epilepsy']
x = x.values
y = y.values
#调用CNN模型
model = CNNModel()
model.setCNNModel()
model.complie(np.reshape(x, (11500, 1, 178, 1)),
np.reshape(y, (11500, 1)),
epoch=200)
#model.load_CNN()
y1=model.predict(np.reshape(x[0,:], (1, 1, 178, 1)))
print(y1)
print(y[0])
tfjs.converters.save_keras_model(model.model, './tfjs_model')
2.平台使用 tensorflow-js
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>脑电波诊断</title>
<link rel="stylesheet" type="text/css" th:href="@{/easyui/themes/default/easyui.css}">
<link rel="stylesheet" type="text/css" th:href="@{/easyui/themes/icon.css}">
<link rel="stylesheet" type="text/css" th:href="@{/easyui/css/demo.css}">
<script type="text/javascript" th:src="@{/easyui/jquery.min.js}"></script>
<script type="text/javascript" th:src="@{/easyui/jquery.easyui.min.js}"></script>
<script type="text/javascript" th:src="@{/easyui/js/validateExtends.js}"></script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs/dist/tf.min.js"></script>
</head>
<body style="padding:0px;">
<div class="panel-header"><div class="panel-title panel-with-icon">脑电波显示</div><div class="panel-icon icon-more"></div><div class="panel-tool"></div></div>
<!-- 工具栏 -->
<div id="toolbar" class="datagrid-toolbar">
<div style="margin-top: 3px;">
导入信号: <input type="file" multiple id="txtfileId" />
<button onclick="return addWord0()">显示</button>
<button onclick="diagnose()">诊断</button>
</div>
</div>
<div id="charts-diagnose" style="width:100%;height:500px;"></div>
</body>
<script type="text/javascript" th:src="@{/easyui/js/echarts.common.min.js}"></script>
<script>
var option0 = {
xAxis: {
type: 'category',
data: []
},
yAxis: {
type: 'value'
},
series: [{
data: [],
type: 'line'
}]
};
// 基于准备好的dom,初始化echarts实例
var myChart0 = echarts.init(document.getElementById('charts-diagnose'));
function showCharts0(option){
// 使用刚指定的配置项和数据显示图表。
myChart0.setOption(option);
}
// 指定图表的配置项和数据
//提交eeg数据
var eeg0=[];
function addWord0() {
var objFile = document.getElementById("txtfileId");
if(objFile.value == "") {
alert("txt不能空")
return false;
}
var files = $('#txtfileId').prop('files'); //获取到文件列表
//console.log(files);
if(files.length == 0 || files.length > 1) {
alert('请选择一个文件');
return false;
} else {
var reader = new FileReader(); //新建一个FileReader
reader.readAsText(files[0], "UTF-8"); //读取文件
reader.onload = function(evt) { //读取完文件之后会回来这里
var fileString = evt.target.result; // 读取文件内容
eeg0=fileString.split("\r\n").map(Number);
//console.log(eeg0);
option0.series[0].data=eeg0;
showCharts0(option0);
}
return false;
}
}
async function diagnose(){
const model = await tf.loadLayersModel('/model/model.json');
const x = tf.tensor(eeg0.slice(0,178)).reshape([1,1, 178, 1]);
//x.print();
var y=model.predict(x).arraySync();
//console.log(y);
var level='info';
if(y>0.5){
level='error';
}
$.messager.alert("诊断结果","患病置信度为"+String(Math.floor(y[0] * 1000) / 1000),level);
model.dispose();
x.dispose();
y.dispose();
}
</script>
</html>
3.总体效果
tensorflowjs_癫痫诊断
总结
资源链接:
https://download.csdn.net/download/qq_27663847/85466087