多粒度级联森林(gcForest)官方库安装及使用教程(通俗易懂)


近日文献调研过程中了解到周志华教授团队在2018年提出的多粒度级联森林模型,开拓了另一条“深度化”的道路,论文中该模型的性能较好,但可惜在本地数据集上的性能却仅仅稍好于一般的集成学习模型。尽管有一点小失望,但多粒度级联森林的算法原理还是很值得一学。在安装官方库时在网上搜索的安装教程都比较旧,经本人踩坑后做此记录。
(我的环境是conda 4.8.4,python3.7.0,实验后以下安装及使用没有问题)

安装教程

首先以管理员身份进入Anaconda Prompt,并输入conda install git指令安装git
在这里插入图片描述
接着调用git下载官方库,继续在Anaconda Prompt中输入git clone https://github.com/kingfengji/gcForest.git指令
在这里插入图片描述

进入运行目录(C:\WINDOWS\system32)中的gcForest文件夹,在此文件夹中找到lib文件夹中的gcforest文件夹,然后将该gcforest文件夹复制到Anaconda3的site-packages文件夹中(C:\WINDOWS\system32\Anaconda3\Lib\site-packages)

上面的这一步复制注意不要复制错文件夹了

最后安装该官方库的依赖包,在gcForest文件夹中的requirements.txt文档中有详细的清单如下:

argparse
joblib
keras
psutil
scikit-learn>=0.18.1
scipy
simplejson
tensorflow
xgboost

为避免报错,最好手动安装(conda install)下这些包

使用教程

import gcforest
from gcforest.gcforest import GCForest
from sklearn.externals import joblib
from sklearn.datasets import load_iris, load_digits
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split

get_toy_config()函数中定义模型各项参数

def get_toy_config():
    config = {}
    ca_config = {}
    ca_config["random_state"] = 0
    ca_config["max_layers"] = 100 ##最大层数
    ca_config["early_stopping_rounds"] = 3 
    ca_config["n_classes"] = 3 ##类别数
    ##选择级联森林的基模型
    ca_config["estimators"] = []
    ca_config["estimators"].append(
            {"n_folds": 5, "type": "XGBClassifier", "n_estimators": 10, "max_depth": 5,
             "objective": "multi:softprob", "silent": True, "nthread": -1, "learning_rate": 0.1} )
    ca_config["estimators"].append({"n_folds": 5, "type": "RandomForestClassifier", "n_estimators": 10, "max_depth": None, "n_jobs": -1})
    ca_config["estimators"].append({"n_folds": 5, "type": "ExtraTreesClassifier", "n_estimators": 10, "max_depth": None, "n_jobs": -1})
    ca_config["estimators"].append({"n_folds": 1, "type": "LogisticRegression"})
    config["cascade"] = ca_config
    return config

基本应用如下

def irisFunc():
    iris=load_iris()
    X,y=iris.data,iris.target ##导入数据
    ##划分训练、测试集
    X_train, X_test, y_train, y_truth = train_test_split(X,y, test_size=0.2, shuffle=True, random_state=111, stratify=y)    
    model = GCForest(get_toy_config()) ##构建模型
    model.fit_transform(X_train,y_train) ##训练
    y_predict=model.predict(np.array(X_test)) ##预测       
    joblib.dump(model,'irisModel.sav') ##保存模型
    print(y_predict)
    print("accuracy:",accuracy_score(y_truth,y_predict))

更多API的说明可到官方的GitHub上看看
在这里插入图片描述

同时,该官方库的源码可读性比较强,可根据自身的需要做适当改动,例如在lib/gcforest/estimators/__init__.py中加入新的基模型。

多粒度级联森林的模型结构如下:

在这里插入图片描述

以后有空的话精读这篇论文后再记录下学习笔记吧(ps:性能真的感觉没预想中那么好啊)CSDN上也有几篇理论分析得挺详细的(例如gcforest 深度森林原理及实现)。

Reference

【gcForest】安装;【Git】安装;【安装依赖】

kingfengji/gcForest

python实践gcForest模型对鸢尾花数据集iris进行分类

评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值