【自己练手的小项目】

自己练手的小项目——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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 面向对象编程是一种基于对象的软件设计方法,它强调程序的结构应该以对象为中心。这种编程方式使得代码更易读、更易理解,同时也方便代码重用和维护。 对于面向对象编程练手项目,可以考虑开发一个简单的学生管理系统。该系统可以实现对学生信息的录入、查询、修改和删除等功能。在该项目中,可以定义一个专门管理学生信息的类,该类可以包含学生的基本信息,如姓名、性别、年龄、学号等。同时,还可以定义各种操作学生信息的方法,如添加学生信息的方法、删除学生信息的方法等。在类的实例化之后,可以创建一个学生信息管理界面,借助界面方便用户进行学生信息的操作。 另外,针对学生管理系统的需求,还可以扩展系统功能,实现诸如成绩管理、课程管理等功能。通过不断添加更多的功能,可以逐步提高项目的复杂度,从而更好地巩固面向对象编程的知识。 总之,通过开发基于面向对象编程思想的小项目,是一个非常有效的学习和练手方式。它不仅可以帮助我们更深入地理解面向对象编程,还可以培养我们的编程思维和编程能力。 ### 回答2: 面向对象是一种编程范式,它将程序中的数据和操作封装在对象中,以实现代码的重用性、可维护性和可扩展性。练手项目是学习编程的重要途径之一,因为它们可以让我们在一个相对较小的环境中实践和掌握所学的知识。 如果想在练手项目中锻炼面向对象编程的技能,可以选择一些具体的实现和需求较少的项目,如模拟银行账户、统计学生成绩等。在编写代码时,需要注意以下几点: 1.定义类和对象:先确定需要用到的类和对象,明确每个对象的属性和方法。 2.封装和继承:使用封装和继承来实现代码的重用性和可维护性。 3.重载和多态:了解和使用重载和多态等面向对象的编程概念,以提高代码的可扩展性和灵活性。 4.单元测试:编写完代码后,进行单元测试来确保代码的正确性。 最终,在练手项目中使用面向对象编程,可以加深对面向对象编程的理解和应用,并增强自己的编程技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值