关于 MacBook Pro 运行 XGBoost 遇到的各类问题

机器学习第一期:在MacBook Pro 运行 XGBoost 遇到的各类问题

前言

因为工作原因,需要平凡接触 XGBoost 这个模型。为了方便起见,除了公司提供的 Linux 服务器以外,自己也在本地安装了 XGBoost,从此开始遇到各种问题,甚至还重装了 anaconda3,可谓是血泪史。所以在此记录下自己遇到的各种问题和最后解决的途径,也欢迎大家在评论区留言给出自己独到的见解~

开始运行

运行环境

MacBook Pro (13-inch, M1, 2020)
芯片 Apple M1
内存 16 GB
环境 Python 3.7
编译器 Pycharm

我的 Python 是从 anaconda3 安装的 Anaconda3-2019.10-MacOSX-x86_64.sh,以下为各类安装包的地址,真的非常全,感谢清华大学开源镜像站!

anaconda3 下载地址

安装 XGBoost

我是从 Github 库下载最新版 XGBoost 安装,Github 地址如下:
https://github.com/dmlc/xgboost

1. 安装Homebrew
HomeBrew是mac系统的包管理软件,类似于ubuntu的apt-get或者centos的yum,安装方法如下,在终端中输入:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

我是之前就安装了 HomeBrew,所以不清楚这个链接是否需要翻墙,如果有卡顿大家也可以选择国内的下载站,网上搜一下就有

2. 安装gcc-6

brew install gcc --without-multilib

这个过程可能会比较久,如果有代码报错可以把 --without-multilib 去掉
如果有必要的话可能也需要安装

brew install llvm

brew install clang-omp

3. 选择根目录
选择根目录作为安装xgboost的地址

cd ~

根据之前多部血泪的经验,这一步真的不能省

4. 开始克隆 xgboost

git clone --recursive https://github.com/dmlc/xgboost 

到这一步我一直克隆到一半就断,后来直接上github网站用桌面版打开直接复制到了根目录,大家可以根据自己方便的方式获取下载包

5. 直接键入

cd xgboost; cp make/config.mk ./config.mk; make -j4

6. 键入

cd python-package; sudo python setup.py install

其他安装方式遇到的问题

1. Pycharm 内直接安装
一开始我想的很简单,就和别的算法包一样,直接在编译器里安装就好了
Pycharm 内部安装包
真的是轻便简单,但是会遇到各种问题
首先是

import xgboost

这个阶段就会报错,后来通过删掉重装,终于能把这个包导入了,但在代码运行阶段直接开始报更过的错误,比如:XGBoostError: XGBoost Library (libxgboost.dylib) could not be loadedAttributeError: /home/hp/anaconda3/lib/libxgboost.so: undefined symbol: XGDMatrixSetDenseInfo 还有 llysm: symblo not found
贴别是最后一种错误,我真的遇到了无数次,完全没办法解决,最后通过重装了 python 解决了。所以重装真的能解决很多问题!牢记上面提供的软件镜像站哦~

2. 通过 pip 或者 conda 安装
其实我是相信conda 安装 pyxgboost是正确的方式,但是我自己安装的时候它自动把我的anaconda3 downgrade了,导致我正常的 python 运行也出现了障碍,这也是最后导致我重装 python 的原因。但是在此还是提供 conda 安装方法,毕竟网上很多教程还是推荐的:

conda install py-xgboost

如果之前安装的版本出现报错,需要先把之前安装的卸载了:

pip uninstall xgboost

或者

pip3 uninstall xgboost

测试你的 xgboost 吧

以下是一段简单的 xgb 代码,如果能成功跑出说明算法包安装没有问题,大家快快尝试吧~

#%%
from sklearn import datasets
from sklearn.model_selection import train_test_split
import xgboost as xgb
from sklearn import metrics

# 导入鸢尾花的数据
iris = datasets.load_iris()
# 特征数据
data = iris.data[:100] # 有4个特征
# 标签
label = iris.target[:100]

# 提取训练集和测试集
# random_state:是随机数的种子。
train_x, test_x, train_y, test_y = train_test_split(data, label, random_state=0)

dtrain = xgb.DMatrix(train_x, label = train_y)
dtest = xgb.DMatrix(test_x)

# 参数设置
params={'booster':'gbtree',
    'objective': 'binary:logistic',
    'eval_metric': 'auc',
    'max_depth':4,
    'lambda':10,
    'subsample':0.75,
    'colsample_bytree':0.75,
    'min_child_weight':2,
    'eta': 0.025,
    'seed':0,
    'nthread':8,
     'silent':1}

watchlist = [(dtrain,'train')]

bst=xgb.train(params,dtrain,num_boost_round=100,evals=watchlist)
ypred=bst.predict(dtest)

# 设置阈值, 输出一些评价指标
# 0.5为阈值,ypred >= 0.5输出0或1
y_pred = (ypred >= 0.5)*1

# ROC曲线下与坐标轴围成的面积
print ('AUC: %.4f' % metrics.roc_auc_score(test_y,ypred))
# 准确率
print ('ACC: %.4f' % metrics.accuracy_score(test_y,y_pred))
print ('Recall: %.4f' % metrics.recall_score(test_y,y_pred))
# 精确率和召回率的调和平均数
print ('F1-score: %.4f' %metrics.f1_score(test_y,y_pred))
print ('Precesion: %.4f' %metrics.precision_score(test_y,y_pred))
metrics.confusion_matrix(test_y,y_pred)

总结

以上就是我在本地安装并运行 xgboost 遇到的各种问题,因为整个过程很长,所以感觉是值得记录下来的笔记,欢迎大家发表自己的意见遇到问题我们可以一起解决。谢谢

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值