描述: 精神分裂症患者的运动活动数据库 ===============================================================
使用来自智能手表等监测设备或通过手机收集的运动的传感器数据来预测某些健康状况或性能结果,在计算机科学和医学研究中都是一个非常热门的话题。为了能够进行可靠和可重复的研究,公开分享数据和结果非常重要。在医学上,由于法律限制或由于从临床试验中收集的数据被视为非常有价值并且应该保存在“内部”,这通常很困难。因此,我们提出了 PSYKOSE,这是一个由运动活动组成的公开共享数据集。该数据集包含从精神分裂症患者那里收集的传感器数据。总的来说,我们有来自精神分裂症患者、精神分裂症患者和对照组的数据。对于数据集中的每个人,我们提供连续几天收集的传感器数据。除了传感器数据外,我们还在观察期间提供一些人口统计数据和医疗评估。精神分裂症状态由豪克兰大学医院的医学专家评估。除了数据之外,还提供数据集的基线分析和可能的用例。
从传感器收集并通过机器学习技术分析的客观生理参数作为支持心理健康领域现有主观诊断实践的工具,已经引起了相当大的兴趣。为了利用这些数据进行可靠和可重复的研究,公开分享数据和结果非常重要。在医疗领域,由于隐私政策,共享数据经常存在问题。在这个数据集中,我们提供了一个关于运动活动的匿名数据集,其中包含从精神分裂症患者那里收集的活动记录仪数据。
文件夹结构和数据格式
-
控制
- control_1.csv
- control_2.csv
- …
- control_32.csv
-
病人
- patient_1.csv
- patient_2.csv
- …
- patient_22.csv
-
days.csv
-
patients_info.csv
-
精神分裂症-features.csv
控制文件夹和数据:
对照组的活动数据(32 名健康对照 = 23 名医院员工 + 5 名护理学生 + 4 名从全科医生那里招募的健康人员)。CSV 文件(即 control_1.csv)包含活动记录仪活动测量值。CSV 中的列是时间戳(一分钟间隔)、日期(测量日期)、活动(活动记录仪手表的活动测量值)。
患者文件夹和数据:
从豪克兰大学医院长期开放式精神病病房住院的 22 名精神病患者(3 名女性和 19 名男性)收集的运动记录仪数据文件夹。CSV 文件(即 patient_1.csv)包含活动记录仪活动测量值。CSV 中的列是时间戳(一分钟间隔)、日期(测量日期)、活动(活动记录仪手表的活动测量值)。
days.csv中数据:
该文件包含患者和对照组参与研究的天数。它包含列 id(标识符)和 days(完整天数)。
patients_infor.csv中的数据:
此文件包含以下列:数字(患者标识符)、性别(男性或女性)、年龄(患者年龄)、天数(患者佩戴活动记录仪的整天)、schtype(精神分裂症类型)、偏头痛(患者是否有偏头痛)、BPRS(BPRS 总分)、cloz(患者是否使用氯氮平作为抗精神病药物)、trad(患者是否使用传统抗精神病药物或现代抗精神病药物)、 Moodst(患者是否使用过情绪稳定药物)、Agehosp(首次住院的年龄)。
精神分裂症-features.csv 中的数据:
这包含用于基线实验的统计特征。该文件包含四列:userid(患者标识符)、class(预测二进制的类)、class_str(字符串形式的类名)、f.mean(平均值)、f.sd(标准差)、f.propZeros(零的比例)。
核心代码如下:
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
import xgboost as xgb
import lightgbm as lgb
import numpy as np
import pandas as pd
import os
import matplotlib.pyplot as plt
import seaborn as sns
color = sns.color_palette()
import matplotlib as mpl
from sklearn import preprocessing as pp
from sklearn.model_selection import train_test_split
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import log_loss
from sklearn.metrics import precision_recall_curve, average_precision_score
from sklearn.metrics import roc_curve, auc, roc_auc_score
from sklearn.metrics import confusion_matrix, classification_report
get_ipython().run_line_magic('matplotlib', 'inline')
current_path = os.getcwd()
file = '/CHANGE ME TO CORRECT PATH/features.csv'
data = pd.read_csv(current_path + file)
dataX = data.copy().drop(['Class'],axis=1)
dataY = data['Class'].copy()
featuresToScale = dataX.drop(['Time'],axis=1).columns
sX = pp.StandardScaler(copy=True)
dataX.loc[:,featuresToScale] = sX.fit_transform(dataX[featuresToScale])
scalingFactors = pd.DataFrame(data=[sX.mean_,sX.scale_],index=['Mean','StDev'],columns=featuresToScale)
X_train