使用 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 进行帕金森病预测的机器学习方法。通过利用随机森林分类器算法和综合数据集,我们证明了机器学习在准确预测帕金森病存在方面的有效性。
结果突出了这种方法在协助医疗保健专业人员进行早期诊断和干预方面的潜力,从而改善患者预后。