用XGBoost检测帕金森病仅需十行Python代码

拉风小宇 2018-04-06

XGBoost是一种流行的技术,是传统回归/神经网络的完美替代方案。它代表E X treme G radient Boost ing,基本上构建了一些决策树来计算梯度

用XGBoost检测帕金森病仅需十行Python代码

这听起来很简单,但可以非常强大。以帕金森检测为例:我们有几个指标可以分析,最终我们需要诊断帕金森病(分类!)。

10行代码

让我们开始收集一些数据:跳到UCI的ML数据库并下载帕金森氏调用的数据集parkinsons.data。他们是CSV,所以我们可以用Pandas快速解析它们:

df = pd.read_csv('parkinsons.data')

接下来,我们需要获取功能和标签。除了第一列(名称)外,这些列方便地是所有数字,并且具有标签的列是“状态”(已经是0或1)。让我们忽略他们现在的含义,并盲目分析它们(不要在实践中这样做)。这使我们能够很快地获得培训数据:

features = df.loc [:, df.columns!='status']。values [:, 1:]

labels = df.loc [:,'status']。values

接下来,我们需要调整我们的功能,以便它们在-1和1之间,以便它们被标准化。我们可以用这样sklearn的辉煌来做到这一点MinMaxScaler:

Scaler = MinMaxScaler(( - 1,1))

X = scaler.fit_transform(features)

到目前为止我们已经有5条线了。接下来,让我们将其分解为训练和测试数据,以便防止过度拟合。没有太多的数据点,所以让我们分成14%的测试数据,这次使用sklearn的train_test_split便利功能:

X_r, X_s, Y_r, Y_s = train_test_split(X, labels, test_size=0.14)

然后我们使用xgboost已经构建好的用于分类并通过xgboost模块(pip install xgboost)提供的XGBClassifier :

model = XGBClassifier()

model.fit(X_r,Y_r)

让我们通过评估我们的模型与之前的测试集来评估我们的模型,其accuracy_score功能来自sklearn:

Y_hat = [round(yhat) for yhat in model.predict(X_test)]

print(accuracy_score(Y_test, Y_hat))

你应该看到在90年代的高准确度(在测试集~96.42%)!

就是这样!10行代码,你已经为帕金森氏训练了一个完整的XGBoosting分类器。

后记

XGBoosting功能非常强大,绝对可以成为您下一个项目的有用工具!这更深入 - 对于多输出,你需要一个MultiOutput模型(SciKit Learn有很好的包装),为了获得更准确的信息,你需要微调你的XGBoost模型。

相关推荐