机器学习项目——基于机器学习(决策树 随机森林 朴素贝叶斯 SVM KNN XGBoost)的帕金森脑电特征识别研究(代码/报告材料)

本文主要是介绍机器学习项目——基于机器学习(决策树 随机森林 朴素贝叶斯 SVM KNN XGBoost)的帕金森脑电特征识别研究(代码/报告材料),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

完整的论文代码见文章末尾 以下为核心内容和部分结果

问题背景

帕金森病(Parkinson’s Disease, PD)是一种常见的神经退行性疾病,其主要特征是中枢神经系统的多巴胺能神经元逐渐丧失,导致患者出现运动障碍、震颤、僵硬等症状。然而,除运动症状外,帕金森病患者还常常伴有一系列非运动症状,其中睡眠障碍是最为显著的非运动症状之一。

脑电图(Electroencephalogram, EEG)是一种记录大脑电活动的无创检测方法,广泛用于睡眠研究。通过分析帕金森病患者在不同睡眠状态下的脑电图特征,可以揭示其睡眠结构的异常变化,为进一步的诊断和治疗提供依据。

本文旨在利用多种机器学习模型对帕金森病患者的睡眠状态脑电特征进行分析和分类。

数据集

帕金森病EEG数据集来自UCI机器学习数据库,包含15名帕金森病患者和16名健康对照的EEG信号。这些数据用于研究帕金森病患者和健康人之间EEG信号的差异,旨在帮助诊断和理解帕金森病,数据集地址为:点击

部分数据分析

在这里插入图片描述

    MDVP基本频率,单位为赫兹(Hz)。MDVP最大基本频率。MDVP最小基本频率。MDVP基本频率的波动百分比。MDVP基本频率的绝对波动。MDVP基本频率相对平均扰动。MDVP五点周期扰动商。Jitter 周期差异的绝对平均值,衡量频率波动。MDVP 振幅波动。MDVP振幅波动,以分贝(dB)为单位。Shimmer三点振幅扰动商。Shimmer五点振幅扰动商。MDVP平均振幅扰动商。Shimmer振幅差异的绝对平均值。NHR - 噪声与谐波比。HNR - 谐波与噪声比。status - 受试者状态(通常0表示健康,1表示病理状态)。RPDE - 递归周期密度熵,衡量信号复杂度。DFA - 去趋势波动分析 spread1 - 基本频率扩展的非线性度量。D2 - 关联维数,衡量信号混沌性。PPE - 音调周期熵,另一种衡量信号复杂度的方法。

相关性分析

在这里插入图片描述

部分算法代码

XGBoost 网格搜索交叉验证(GridSearchCV)

# Defining Parameter Dictionary
param_dict = {'max_depth': range(4,8), 'eta' : [0.1, 0.2, 0.3, 0.4, 0.5],'reg_lambda' : [0.8, 0.9, 1, 1.1, 1.2],'random_state': [300, 600, 900]}
clf = GridSearchCV(XGBClassifier(), param_grid = param_dict,scoring = 'f1', cv = 3, verbose = 1)
clf.fit(X_train, y_train)
GridSearchCV(cv=3, error_score=nan,estimator=XGBClassifier(base_score=0.5, booster='gbtree',colsample_bylevel=1, colsample_bynode=1,colsample_bytree=1, gamma=0,learning_rate=0.1, max_delta_step=0,max_depth=3, min_child_weight=1,missing=None, n_estimators=100, n_jobs=1,nthread=None, objective='binary:logistic',random_state=0, reg_alpha=0, reg_lambda=1,scale_pos_weight=1, seed=None, silent=None,subsample=1, verbosity=1),iid='deprecated', n_jobs=None,param_grid={'eta': [0.1, 0.2, 0.3, 0.4, 0.5],'max_depth': range(4, 8),'random_state': [300, 600, 900],'reg_lambda': [0.8, 0.9, 1, 1.1, 1.2]},pre_dispatch='2*n_jobs', refit=True, return_train_score=False,scoring='f1', verbose=1) 

部分结果展示

展示了使用决策树分类器(Decision Tree Classifier)对数据进行训练和测试的结果,具体包括模型的精度、召回率、F1分数和支持度。

  • 模型在测试数据集上的总体准确率为92%,表现良好。
  • 对类别0的精度较高(97%),但召回率稍低(88%),可能会漏掉一些实际为类别0的样本。
  • 对类别1的召回率较高(96%),精度相对较低(86%),有时会错误地将一些样本预测为类别1。
  • 综合来看,模型在这两个类别上的表现较为均衡,F1分数也较高(都在0.91以上),说明模型在处理这类任务时具有较好的分类能力。

在这里插入图片描述
展示了使用随机森林分类器(Random Forest Classifier)对数据进行训练和测试的结果,具体包括模型的精度、召回率、F1分数和支持度。

  • 模型在测试数据集上的总体准确率为95%,表现非常优秀。
  • 对类别0的精度和召回率都很高(分别为94%和97%),F1分数也很高(0.96),说明模型对类别0的预测非常准确和全面。
  • 对类别1的精度和召回率也很高(分别为96%和92%),F1分数为0.94,说明模型对类别1的预测也很准确。
  • 综合来看,模型在这两个类别上的表现都非常均衡,F1分数都在0.94以上,表明模型在处理这类任务时具有非常强的分类能力,比之前的决策树分类器表现更好。

在这里插入图片描述

在这里插入图片描述
最优模型: 随机森林(RF)和支持向量机(SVM)在各项指标上表现均衡且优异,特别是在准确率、F1-Score和R2-Score上表现突出。

次优模型: K近邻(KNN)也表现良好,但相比RF和SVM稍逊色。

逻辑回归(LR)和XGBoost(XGB): 表现尚可,但在一些指标上略低于最优模型。

表现较差: 朴素贝叶斯(NB),特别是在准确率、F1-Score和R2-Score上,性能较为不理想。

论文 代码 获取方式

点这里 只需要一点点辛苦费,不需要你跑模型,都是ipynb文件。

这篇关于机器学习项目——基于机器学习(决策树 随机森林 朴素贝叶斯 SVM KNN XGBoost)的帕金森脑电特征识别研究(代码/报告材料)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138192

相关文章

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

MySQL版本问题导致项目无法启动问题的解决方案

《MySQL版本问题导致项目无法启动问题的解决方案》本文记录了一次因MySQL版本不一致导致项目启动失败的经历,详细解析了连接错误的原因,并提供了两种解决方案:调整连接字符串禁用SSL或统一MySQL... 目录本地项目启动报错报错原因:解决方案第一个:第二种:容器启动mysql的坑两种修改时区的方法:本地

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

springboot项目中使用JOSN解析库的方法

《springboot项目中使用JOSN解析库的方法》JSON,全程是JavaScriptObjectNotation,是一种轻量级的数据交换格式,本文给大家介绍springboot项目中使用JOSN... 目录一、jsON解析简介二、Spring Boot项目中使用JSON解析1、pom.XML文件引入依

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh