【信号处理】基于EEG脑电信号的自闭症预测典型方法实现

理论

自闭者主要受到遗传和环境因素的共同影响。由于自闭症是一种谱系障碍,因此每个自闭症患者都有独特的优势和挑战。自闭症患者学习、思考和解决问题的方式可以是高技能的,也可以是严峻的挑战。研究表明,高质量的早期干预可以改善学习、沟通和社交技能,以及潜在的大脑发育。然而诊断过程可能需要数年时间。本项目主要实现自闭者的早期检测(正常vs非正常),为早期筛查和干预提供及时的预警。

工具

自闭者脑电数据集

方法实现

数据加载
from sklearn.metrics import roc_auc_score
from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import mutual_info_classif,f_classif
from sklearn.pipeline import Pipeline
from sklearn.model_selection import cross_val_score,StratifiedKFold
from sklearn.feature_selection import RFE
from sklearn.feature_selection import RFECV
from sklearn.neural_network import MLPClassifier 
from category_encoders.target_encoder import TargetEncoder
from sklearn.model_selection import GridSearchCV,RandomizedSearchCV
from sklearn.tree import DecisionTreeClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler,RobustScaler
from category_encoders import MEstimateEncoder
from sklearn.preprocessing import LabelEncoder
from imblearn.over_sampling import RandomOverSampler
from sklearn.inspection import permutation_importance
from imblearn.over_sampling import SMOTE
from sklearn.svm import SVC
from sklearn.ensemble import GradientBoostingClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import StackingClassifier,VotingClassifier
from sklearn.metrics import roc_auc_score, roc_curve, confusion_matrix, ConfusionMatrixDisplaytrain=pd.read_csv('/Autism_Prediction/train.csv')
test=pd.read_csv('/Autism_Prediction/test.csv')
k-折交叉验证数据划分
np.random.seed(1) #I'm using this because there's some
#randomness in how the selectors work, without this, in each run we get different results
kf = StratifiedKFold(n_splits=2, random_state=None,shuffle=False) #for cross validation/ random_state
# is None because shuffle is False
score=[]for train_index, val_index in kf.split(train_set,y):#indices for train and validation setsX_train, X_val =train_set.iloc[train_index,:], train_set.iloc[val_index,:]y_train, y_val = y[train_index], y[val_index]#******************************* CLEANING ***********************************#for train setX_train.ethnicity=X_train.ethnicity.str.replace('others','Others',regex=False)X_train.ethnicity=X_train.ethnicity.str.replace('?','Others',regex=False)X_train.relation=X_train.relation.str.replace('?','Others',regex=False)X_train.relation=X_train.relation.str.replace('Health care professional','Others',regex=False)#for validation set:X_val.ethnicity=X_val.ethnicity.str.replace('others','Others',regex=False)X_val.ethnicity=X_val.ethnicity.str.replace('?','Others',regex=False)X_val.relation=X_val.relation.str.replace('?','Others',regex=False)X_val.relation=X_val.relation.str.replace('Health care professional','Others',regex=False)#***************************************ENCODING****************************************** #FOR ENCODING USE THE TRAINING VALUES, DO NOT CALCULATE THEM AGAIN FOR THE TEST SET!le=LabelEncoder()for col in ['jaundice','austim']:#for the training set:X_train[col]=le.fit_transform(X_train[col])#for the validation set:X_val[col]=le.transform(X_val[col])#*********************Encoding Relation Column***************************#create an encoding map, using the training set, then implementing it on val and test setsrel=X_train.relation.value_counts()rel=dict(zip(rel.index,range(len(rel))))#for the training set:X_train.relation=X_train.relation.map(rel)#for the validation set: if there's a category not present in the map, we'll assign sth. to itX_val.relation=X_val.relation.map(rel)X_val.relation[X_val.relation.isna()]=len(rel)#*********************Encoding Ethnicity Column***************************#create an encoding map, using the training set, then implementing it on val and test setseth=X_train.ethnicity.value_counts()eth=dict(zip(eth.index,range(len(eth))))#for the training set:X_train.ethnicity=X_train.ethnicity.map(eth)#for the validation set: if there's a category not present in the map, we'll assign sth. to itX_val.ethnicity=X_val.ethnicity.map(eth)X_val.ethnicity[X_val.ethnicity.isna()]=len(eth)#*****************************Encoding Country Of Res******************************#create an encoding map, using the training set, then implementing it on val and test setscont=X_train.contry_of_res.value_counts()cont=dict(zip(cont.index,range(len(cont))))#for the training set:X_train.contry_of_res=X_train.contry_of_res.map(cont)#for the validation set: if there's a category not present in the map, we'll assign sth. to itX_val.contry_of_res=X_val.contry_of_res.map(cont)X_val.contry_of_res[X_val.contry_of_res.isna()]=len(cont)#***************************Age Grouping***********************************#     age_grouper(X_train)
#     age_grouper(X_val)#*******************************Standardization*************************ss=StandardScaler()rs=RobustScaler()X_train[['result','age']]=rs.fit_transform(X_train[['result','age']])X_val[['result','age']]=rs.transform(X_val[['result','age']])
 使用不同模型进行数据分类
model_list = ['KNearestNeighbours', 'DecisionTree', 'LGBM','XGBRF','CatBoostClassifier','RandomForest','Logistic Regression', 'SVC' ]
k近邻模型
# K Neighbors Classifierkn_clf = KNeighborsClassifier(n_neighbors=6)
kn_clf.fit(X_train,y_train)
y_pred=pd.DataFrame(kn_clf.predict_proba(X_val))[1].values
score.append(roc_auc_score(y_val,y_pred))np.array(score)cm = confusion_matrix(y_val, kn_clf.predict(X_val))
cmd = ConfusionMatrixDisplay(cm)
cmd.plot();

 

 决策树模型
#DecissionTree
dt_clf = DecisionTreeClassifier(max_leaf_nodes=10, random_state=0, criterion='entropy')
dt_clf.fit(X_train, y_train)
y_pred=pd.DataFrame(dt_clf.predict_proba(X_val))[1].values
score.append(roc_auc_score(y_val,y_pred))np.array(score)cm = confusion_matrix(y_val, dt_clf.predict(X_val))
cmd = ConfusionMatrixDisplay(cm)
cmd.plot();

 lightgbm模型
#  lightgbm 
import lightgbm
lgb_clf = lightgbm.LGBMClassifier(max_depth=2, random_state=4)
lgb_clf.fit(X_train, y_train)
y_pred=pd.DataFrame(lgb_clf.predict_proba(X_val))[1].values
score.append(roc_auc_score(y_val,y_pred))np.array(score)cm = confusion_matrix(y_val, lgb_clf.predict(X_val))
cmd = ConfusionMatrixDisplay(cm)
cmd.plot();

 

 

代码获取

相关问题和项目开发,欢迎交流沟通。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/1137.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ZStack教育云计算解决方案入选高质量数字化转型技术解决方案集

近日,中国信通院“铸基计划”《高质量数字化转型技术解决方案(2023年度)》(以下简称“方案集”)发布,云轴科技ZStack智慧教育云计算解决方案入选《高质量数字化转型技术解决方案集》。 为促进数字化转型相…

第63天:服务攻防-框架安全CVE 复现DjangoFlaskNode.JSJQuery

目录 思维导图 案例一:JavaScript-开发框架安全-Jquery&Node node.js目录穿越 CVE-2021-21315命令执行 Jquery CVE-2018-9207 案例二:Python-开发框架安全-Django&Flask django cve_2019_14234 CVE-2021-35042 flask ssti 思维导图 案…

Jenkins和gitlab实现CICD

1 背景 在开发TracerBackend服务的时候,每次更改代码之后需要推送到gitlab,然后ssh登录到Ubuntu的服务器上部署新的代码。服务成功启动之后,在本地执行测试用例,觉得这一套操作流程还是挺复杂的。想起公司的代码发布流程&#xf…

多模态视觉语言模型:BLIP和BLIP2

1. BLIP BLIP: Bootstrapping Language-Image Pre-training for Unified Vision-Language Understanding and Generation BLIP的总体结构如下所示,主要包括三部分: 单模态编码器(Image encoder/Text encoder):分别进…

智慧浪潮下的产业园区:解读智慧化转型如何打造高效、绿色、安全的新产业高地

随着信息技术的飞速发展,智慧化转型已经成为产业园区发展的重要趋势。在智慧浪潮的推动下,产业园区通过集成应用物联网、大数据、云计算、人工智能等先进技术手段,实现园区的智慧化、高效化、绿色化和安全化,从而打造成为新产业高…

(四)SQL面试题(连续登录、近N日留存)学习简要笔记 #CDA学习打卡

目录 一. 连续登录N天的用户数量 1)举例题目 2)分析思路 3)解题步骤 (a)Step1:选择12月的记录,并根据用户ID和登录日期先去重 (b)Step2:创建辅助列a_rk…

数字接龙(蓝桥杯)

文章目录 数字接龙【问题描述】解题思路DFS 数字接龙 【问题描述】 小蓝最近迷上了一款名为《数字接龙》的迷宫游戏,游戏在一个大小为N N 的格子棋盘上展开,其中每一个格子处都有着一个 0 . . . K − 1 之间的整数。游戏规则如下: 从左上…

使用Python进行云计算:AWS、Azure、和Google Cloud的比较

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行云计算:AWS、Azure、和Google Cloud的比较 随着云计算的普及&am…

【网络】Burpsuite学习笔记

文章目录 1.介绍1.1 正常客户端与服务端通信&BurpSuite代理后1.2 下载激活参考地址1.3 代理设置1.4 Proxy SwitchyOmega 使用1.4.1 新建情景模式1.4.2 设置代理1.4.2 应用选项 1.5 FoxyProxy 使用1.6 安装证书1.6.1 方式一1.6.2 方式二1.6.3 浏览器安装证书1.6.4 或者直接双…

Docker - 入门基础

原文地址,使用效果更佳! Docker - 入门基础 | CoderMast编程桅杆https://www.codermast.com/dev-tools/docker/docker-basic.html Docker架构 Docker 使用的是客户端-服务端(C/S)架构模式,使用远程 API 来管理和创建…

llama-factory SFT 系列教程 (四),lora sft 微调后,使用vllm加速推理

文章目录 文章列表:背景简介llama-factory vllm API 部署融合 lora 模型权重 vllm API 部署HuggingFace API 部署推理API 部署总结 vllm 不使用 API 部署,直接推理数据集 tenplatevllm 代码部署 文章列表: llama-factory SFT系列教程 (一)&a…

JUC面试——⭐⭐Java中的四种引用类型/Threadlocal

四种引用类型 Java 中对象的引用分为四种级别,这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 基础知识 强引用:普通使用的引用 强引用是造成 Java 内存泄漏的主要原因之一 软引用: GC内存不够时回收 适用于&…

翻译 《The Old New Thing》 - What is the Alt+Tab order?

What is the AltTab order? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20031020-00/?p42093 Raymond Chen 2003年10月20日 AltTab 列表中的图标顺序是如何确定的? 是什么决定了在 AltTab 列表中图标出现的顺序?…

第十五届蓝桥杯题解-数字接龙

题意:经过所有格子,并且不能进行交叉,走的下一个格子必须是当前格子值1%k,输出路径最小的那一条(有8个方向,一会粘图) 思路:按照8个方向设置偏移量进行dfs,第一个到达终…

一台服务器同时启动两个版本jdk

之前Java项目都是1.8的jdk,在服务器部署正常使用,服务器配置环境变量jdk1.8版本。最近一次我用了jdk17版本,部署服务器后,遇见了jdk版本不一致报错 报错内容: 52指向jdk1.8,61指向jdk17,大概就是jdk版本不…

[Java基础揉碎]集合

目录 集合的理解和好处 数组 集合的理解和好处 继承图 ​编辑 简单实例 Collection接口和常用方法 1) add:添加单个元素 2) remove:删除指定元素 3) contains:查找元素是否存在 4) size:获取元素个数 5) isEmpty:判断是否为空 ​编辑 6) clear:清空 7) addAll:添…

「51媒体」新闻媒体邀约如何进行媒体宣传(方法)

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 新闻媒体邀约进行媒体宣传是一个策略性的过程,旨在吸引媒体的注意力并促使其对特定事件、产品发布或企业活动进行报道。以下是一些关键步骤和策略: 制定媒体传播方…

【做一名健康的CSDNer】程序员脱单真的很难吗?

脱单的难易程度并不取决于一个人是否是程序员,而是受到多种因素的影响,包括个人的社交能力、生活方式、个性特点、外貌形象、兴趣爱好等。程序员这个职业群体并不例外。 对于程序员来说,可能面临的挑战包括: 工作时间:…

<计算机网络自顶向下> TCP拥塞

目录 TCP拥塞控制机制 TCP拥塞感知 TCP速率控制方法 TCP拥塞控制和流量控制的联合动作 TCP拥塞控制策略 TCP吞吐量 TCP公平性 TCP拥塞控制机制 端到端的拥塞控制机制 路由器不向主机提供有关拥塞的反馈信息 路由器负担较轻 符合网络核心简单的TCP/IP架构原则 端系统根据自…

Oracle使用内部包自定义创建表空间和用户

如果之前有类似的表空间,可以使用dbms自动生成对应的表空间和数据文件 select dbms_metadata.get_ddl(TABLESPACE,ts.tablespace_name) from dba_tablespaces ts; 可以使用类似的 SQL> set echo off SQL> spool /data/logs/create_tablespace.log SQL> select dbms…