Python 进行机器学习进行帕金森病预测
帕金森病是一种影响全球数百万人的神经退行性疾病,及早和准确的诊断对于有效治疗至关重要,可以使用Python中的机器学习轻松实现。
本文探讨了使用机器学习技术预测帕金森病,在UCI机器学习数据库中使用数据集。通过使用随机森林分类器算法,我们展示了如何利用Python来分析和预处理数据、训练预测模型并进行准确预测。
使用Python进行机器学习进行帕金森病预测
我们使用Jupyter笔记本来运行本文中的代码。
以下是使用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进行帕金森病预测的机器学习方法。通过利用随机森林分类器算法和综合数据集,我们展示了机器学习在准确预测帕金森病存在方面的有效性。
结果突显了这种方法在协助医疗专业人员进行早期诊断和干预方面的潜力,从而改善患者的疗效。