使用 Python 进行机器学习的帕金森病预测


帕金森病是一种影响全球数百万人神经退行性疾病,早期和准确的诊断对于有效治疗至关重要,这可以通过使用 Python 中的机器学习轻松实现。

本文探讨了机器学习技术在使用 UCI 机器学习存储库中的数据集预测帕金森病中的应用。通过使用随机森林分类器算法,我们演示了如何利用 Python 分析和预处理数据、训练预测模型以及进行准确预测。

使用 Python 进行机器学习的帕金森病预测

我们已使用 Jupyter notebook 在本文中运行代码。

以下是我们将遵循的使用 Python 进行机器学习的帕金森病预测的步骤:

步骤 1:导入必要的库

示例

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score, confusion_matrix
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

步骤 2:加载帕金森病数据集

程序使用 pd.read_csv() 函数从 'parkinsons.csv' 文件读取数据集,并将其存储在 data 变量中。

示例

# Load the Parkinson's Disease dataset
data = pd.read_csv('parkinsons.csv')

步骤 3:数据清洗

下面的程序使用 drop() 函数从数据集中删除 'name' 列,并将修改后的数据集重新分配给 data 变量。

示例

# Data cleaning
data = data.drop('name', axis=1)  # Remove the 'name' column

步骤 4:数据预处理

下面的程序使用 drop() 函数将特征 (X) 与目标变量 (y) 分开,并将它们分配给相应的变量。

示例

# Data preprocessing
X = data.drop('status', axis=1)  # Features
y = data['status']  # Target variable

步骤 5:数据分析

下面的程序提供了有关数据集的信息:

  • 数据集的形状(行数和列数)使用 data.shape 打印。

  • 分别使用 len(data[data['status'] == 1]) 和 len(data[data['status'] == 0]) 显示患有帕金森病的样本数和健康样本数。

  • 使用 data.describe() 打印数据集的摘要。

示例

print("Data Shape:", data.shape)
print("Parkinson's Disease Samples:", len(data[data['status'] == 1]))
print("Healthy Samples:", len(data[data['status'] == 0]))
print("\nData Summary:")
print(data.describe())

输出

Data Shape: (195, 23)
Parkinson's Disease Samples: 147
Healthy Samples: 48

Data Summary:
       MDVP:Fo(Hz)  MDVP:Fhi(Hz)  MDVP:Flo(Hz)  MDVP:Jitter(%)  \
count   195.000000    195.000000    195.000000      195.000000   
mean    154.228641    197.104918    116.324631        0.006220   
std      41.390065     91.491548     43.521413        0.004848   
min      88.333000    102.145000     65.476000        0.001680   
25%     117.572000    134.862500     84.291000        0.003460   
50%     148.790000    175.829000    104.315000        0.004940   
75%     182.769000    224.205500    140.018500        0.007365   
max     260.105000    592.030000    239.170000        0.033160   

       MDVP:Jitter(Abs)    MDVP:RAP    MDVP:PPQ  Jitter:DDP  MDVP:Shimmer  \
count        195.000000  195.000000  195.000000  195.000000    195.000000   
mean           0.000044    0.003306    0.003446    0.009920      0.029709   
std            0.000035    0.002968    0.002759    0.008903      0.018857   
min            0.000007    0.000680    0.000920    0.002040      0.009540   
25%            0.000020    0.001660    0.001860    0.004985      0.016505   
50%            0.000030    0.002500    0.002690    0.007490      0.022970   
75%            0.000060    0.003835    0.003955    0.011505      0.037885   
max            0.000260    0.021440    0.019580    0.064330      0.119080   

  
max      0.685151    0.825288   -2.434031    0.450493    3.671155    0.527367  

[8 rows x 23 columns]

步骤 6:数据可视化

直方图使用 plt.show() 显示。

示例

# Data visualization
data.hist(figsize=(12, 12))
plt.tight_layout()
plt.show()

输出

步骤 7:数据缩放

下面的程序使用 StandardScaler() 缩放特征,该函数通过减去均值并缩放至单位方差来标准化特征。缩放后的特征存储在 X_scaled 变量中。

示例

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

步骤 8:降维

它使用 PCA(n_components=2) 将特征减少到两个主要成分。减少后的特征存储在 X_pca 变量中。

示例

pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

步骤 9:将数据集拆分为训练集和测试集

下面的程序使用 train_test_split() 将数据集拆分为训练集和测试集。

示例

X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)

步骤 10:创建一个名为随机森林分类器的分类器

下面的程序使用 RandomForestClassifier() 创建随机森林分类器的实例。

训练模型

示例

rf_classifier = RandomForestClassifier()

# Train the model
rf_classifier.fit(X_train, y_train)

输出

RandomForestClassifier()

步骤 11:对测试集进行预测

计算模型的准确率

示例

# Make predictions on the test set
y_pred = rf_classifier.predict(X_test)

accuracy = accuracy_score(y_test, y_pred)
print("\nAccuracy:", accuracy)

输出

Accuracy: 0.9230769230769231

程序通过将预测标签 (y_pred) 与实际标签 (y_test) 进行比较来计算模型的准确率。

步骤 12:混淆矩阵

它使用 sklearn.metrics 中的 confusion_matrix() 函数并将混淆矩阵分配给 cm 变量。

示例

cm = confusion_matrix(y_test, y_pred)
print("\nConfusion Matrix:")
print(cm)

输出

Confusion Matrix:
[[ 5  2]
 [ 1 31]]

结论

总之,本文介绍了一种使用 Python 进行帕金森病预测的机器学习方法。通过利用随机森林分类器算法和综合数据集,我们证明了机器学习在准确预测帕金森病存在方面的有效性。

结果突出了这种方法在协助医疗保健专业人员进行早期诊断和干预方面的潜力,从而改善患者预后。

更新于: 2023年7月24日

498 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告