【机器学习实战入门】利用XGBoost检测帕金森病

在这里插入图片描述
在这个 Python 机器学习项目中,我们将构建一个模型,通过该模型我们可以准确地检测个体是否患有帕金森病。
使用 XGBoost 检测帕金森病— Python 机器学习项目
什么是帕金森病?
帕金森病是一种影响运动并引发震颤和僵硬的中枢神经系统渐进性疾病。它有5个阶段,每年在印度影响超过100万个人。这是一种慢性病,目前还没有治愈方法。帕金森病是一种影响大脑中产生多巴胺神经元的神经退行性疾病。

什么是 XGBoost?
XGBoost 是一种旨在提高速度和性能的新机器学习算法。XGBoost 是指“极端梯度提升”(eXtreme Gradient Boosting),基于决策树。在这个项目中,我们将从 xgboost 库中导入 XGBClassifier;这是 scikit-learn API 对 XGBoost 分类的一个实现。

使用 XGBoost 检测帕金森病的目标
目标是构建一个可以准确检测个体是否存在帕金森病的模型。

关于使用 XGBoost 检测帕金森病的 Python 机器学习项目的简介
在这个 Python 机器学习项目中,我们将使用 Python 库 scikit-learn、numpy、pandas 和 xgboost 构建一个 XGBClassifier 模型。我们将加载数据,获取特征和标签,标准化特征,然后将数据集拆分,构建 XGBClassifier,最后计算模型的准确度。

用于 Python 机器学习项目的帕金森病数据集
您需要 UCI ML 帕金森病数据集;您可以从这里下载。该数据集有24列和195条记录,大小仅39.7 KB。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据集下载:链接: 利用XGBoost检测帕金森病 数据合集

前提条件
您需要用 pip 安装以下库:

pip install numpy pandas sklearn xgboost

您还需要安装 Jupyter Lab,然后使用命令提示符运行它:

C:\Users\DataFlair>jupyter lab

这将在您的浏览器中打开一个新的 JupyterLab 窗口。在此,您将创建一个新的控制台并键入您的代码,然后按 Shift+Enter 逐行或同时执行多行代码。

使用 XGBoost 检测帕金森病的步骤
以下是练习 Python 机器学习项目所需的一些步骤:

  1. 必要的导入:
import numpy as np
import pandas as pd
import os, sys
from sklearn.preprocessing import MinMaxScaler
from xgboost import XGBClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

截图:

Python 机器学习项目

  1. 现在,让我们把数据读入一个 DataFrame 并获取前5条记录。
#DataFlair - 读取数据
df = pd.read_csv('D:\\DataFlair\\parkinsons.data')
df.head()

输出截图:

有趣的 Python 项目

  1. 从 DataFrame(数据集)中获取特征和标签。特征是除‘status’之外的所有列,标签是‘status’列中的值。
#DataFlair - 获取特征和标签
features = df.loc[:, df.columns != 'status'].values[:, 1:]
labels = df.loc[:, 'status'].values

截图:

Python 数据科学项目

  1. ‘status’列的标签值为0和1;让我们获取这两个标签的数量——无论是0还是1。
#DataFlair - 获取标签 (0 和 1) 的数量
print(labels[labels == 1].shape[0], labels[labels == 0].shape[0])

输出截图:

Python 项目

我们的数据集‘status’列中有147个1和48个0。

  1. 初始化一个 MinMaxScaler 并将特征归一化到 -1 和 1 之间。MinMaxScaler 通过将特征缩放到给定范围来转换特征。fit_transform() 方法适合数据,然后转换它。我们不需要缩放标签。
#DataFlair - 将特征归一化到 -1 和 1 之间
scaler = MinMaxScaler((-1, 1))
x = scaler.fit_transform(features)
y = labels

截图:

缩放特征 Python 项目

  1. 现在,将数据集拆分为训练集和测试集,保留20%的数据用于测试。
#DataFlair - 拆分数据集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=7)

截图:

顶级 Python 项目

  1. 初始化一个 XGBClassifier 并训练模型。XGBClassifier 使用极端梯度提升(使用梯度提升算法解决现代数据科学问题)。它属于机器学习的集成学习类别,其中我们使用多个模型进行训练和预测,以产生一个更优的输出。
#DataFlair - 训练模型
model = XGBClassifier()
model.fit(x_train, y_train)

输出截图:

Python 数据科学项目

  1. 最后,生成 y_pred(x_test 的预测值)并计算模型的准确度。将其打印出来。
# DataFlair - 计算准确度
y_pred = model.predict(x_test)
print(accuracy_score(y_test, y_pred) * 100)

输出截图:

Python 机器学习项目

总结
在这个 Python 机器学习项目中,我们学习了如何通过多种因素来检测个体是否患有帕金森病。我们使用了 XGBClassifier,并借助 sklearn 库来准备数据集。这让我们获得了94.87%的准确度,考虑到这个 Python 项目的代码行数,这是非常高的。

希望您喜欢这个 Python 项目。我们已在博客的顶部为您提供了更多有趣 Python 项目的链接。

参考资料

参考资料名称链接
假新闻检测 Python 项目链接
帕金森病检测 Python 项目链接
颜色检测 Python 项目链接
语音情感识别 Python 项目链接
乳腺癌分类 Python 项目链接
年龄和性别检测 Python 项目链接
手写数字识别 Python 项目链接
聊天机器人 Python 项目链接
司机疲劳检测 Python 项目链接
交通标志识别 Python 项目链接
图像描述生成器 Python 项目链接
机器学习入门链接
Python 数据科学手册链接
XGBoost 官方文档链接
Scikit-learn 官方文档链接
Pandas 官方文档链接
NumPy 官方文档链接
Jupyter 官方文档链接
帕金森病研究综述链接
数据介绍:

帕金森病数据集

关于数据集

帕金森病数据集
该数据集由 31 人的一系列生物医学语音测量数据组成,其中 23 人患有帕金森病(PD)。表中的每一列代表一种特定的语音测量指标,每一行对应来自这些个体的 195 条语音记录之一(“name”列)。数据的主要目标是根据“status”列区分健康人和帕金森病患者,其中 0 表示健康,1 表示帕金森病。

数据为 ASCII CSV 格式。CSV 文件的每一行包含一条语音记录的实例。每位患者大约有六条记录,患者的姓名在第一列中标识。如需更多信息或提供意见,请联系 Max Little(little ‘@’ robots.ox.ac.uk)。

更多详细信息包含在以下参考文献中——如果您使用此数据集,请引用:
Max A. Little, Patrick E. McSharry, Eric J. Hunter, Lorraine O. Ramig (2008), ‘Suitability of dysphonia measurements for telemonitoring of Parkinson’s disease’, IEEE Transactions on Biomedical Engineering (即将发表)。

属性信息
矩阵列条目(属性):

  • name - ASCII 格式的受试者姓名和记录编号
  • MDVP:Fo(Hz) - 平均语音基频
  • MDVP:Fhi(Hz) - 最大语音基频
  • MDVP:Flo(Hz) - 最小语音基频
  • MDVP:Jitter(%)、MDVP:Jitter(Abs)、MDVP:RAP、MDVP:PPQ、Jitter:DDP - 基频变化的多种测量指标
  • MDVP:Shimmer、MDVP:Shimmer(dB)、Shimmer:APQ3、Shimmer:APQ5、MDVP:APQ、Shimmer:DDA - 振幅变化的多种测量指标
  • NHR、HNR - 语音中噪声与音调成分比率的两种测量指标
  • status - 受试者的健康状况(1 表示帕金森病,0 表示健康)
  • RPDE、D2 - 两种非线性动态复杂性测量指标
  • DFA - 信号分形缩放指数
  • spread1、spread2、PPE - 基频变化的三种非线性测量指标
posted @   爱上编程技术  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示