可解释机器学习的规则集覆盖算法

wittgenstein的Python项目详细描述


维特根斯坦

我们是否也有这样的情况,即我们玩游戏,并在游戏过程中制定规则?
-维特根斯坦

the duck-rabbit

摘要

这个包实现了两个基于迭代覆盖率的规则集算法:irep和ripperk。

性能类似于sklearn的decisiontree cart实现(参见Performance Tests)。

有关算法的解释,请参阅我在中的文章《面向数据科学》,或在Useful References下面的论文。

安装

要安装,请使用

$ pip install wittgenstein

要卸载,请使用

$ pip uninstall wittgenstein

要求

  • 熊猫
  • 努比

用法

用法语法与sklearn类似。但是,当前版本确实要求将数据作为pandas数据帧传入。

一旦你加载并拆分了你的数据…

>>>importpandasaspd>>>df=pd.read_csv(dataset_filename)>>>fromsklearn.model_selectionimporttrain_test_split# Or any other mechanism you want to use for data partitioning>>>train,test=train_test_split(df,test_size=.33)

我们可以使用ripper或irep来拟合规则集分类器。

>>>importwittgensteinaslw>>>ripper_clf=lw.RIPPER()# Or irep_clf = lw.IREP() to build a model using IREP>>>ripper_clf.fit(train,class_feat='Party')# Or call .fit with params train_X, train_y>>>ripper_clf<RIPPERobjectwithfitruleset(k=2,prune_size=0.33,dl_allowance=64)># Hyperparameter details available in the docstrings and TDS article below

使用规则集属性访问底层训练模型。规则集是连词的析取--“v”表示“或”;“^”表示“和”。

换句话说,如果任何内部嵌套条件组合都为真,则模型将预测正类:

>>>ripper_clf.ruleset_<Rulesetobject:[physician-fee-freeze=n]V[synfuels-corporation-cutback=y^adoption-of-the-budget-resolution=y^anti-satellite-test-ban=n]>

为我们的Fit模型评分:

>>>test_X=test.drop(class_feat,axis=1)>>>test_y=test[class_feat]>>>ripper_clf.score(test_X,test_y)0.9985686906328078

默认的评分标准是准确性。您可以传入其他评分功能,包括通过sklearn提供的功能:

fromsklearn.metricsimportprecision_score,recall_score>>>precision=clf.score(X_test,y_test,precision_score)>>>recall=clf.score(X_test,y_test,recall_score)>>>print(f'precision: {precision} recall: {recall})precision:0.9914...,recall:0.9953...

执行预测:

>>>ripper_clf.predict(new_data)[:5][True,True,False,True,False]

我们也可以让我们的模型告诉我们为什么它会做出每一个积极的预测:

>>>ripper_clf.predict(new_data)[:5]([True,True,False,True,True][<Ruleobject:[physician-fee-freeze=n]>],[<Ruleobject:[physician-fee-freeze=n]>,<Ruleobject:[synfuels-corporation-cutback=y^adoption-of-the-budget-resolution=y^anti-satellite-test-ban=n]>],# This example met multiple sufficient conditions for a positive prediction[],[<Ruleobject:[physician-fee-freeze=n]>],[])

问题

如果你遇到任何问题,或者你有关于如何使维特根斯坦对你更有帮助的反馈或改进请求,请将它们发布到issues,我会做出回应。

贡献

欢迎投稿!如果你有兴趣投稿,请在ilan.moscovitz@gmail.comlinkedin通知我。

有用的参考资料

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
解释java选择方法   连接到127.0.0.1的java间歇性故障,连接到IP(eth0)时没有故障   java如何优雅地杀死hadoop作业/intercept`hadoop作业杀死`   java如何通过引导类加载器以编程方式加载另一个类?   url Java:在查询参数之前使用片段构建URI   在BroadLeaf表blc_order_属性中保存OrderAttributes值时发生java错误   安卓将功能从xml转换为java   java如何将数据写入文件?   java JPA SQL结果映射   Java中整数对象比较运算符的引用安全性   Spring测试失败:java。lang.NoClassDefFoundError:org/springframework/cglib/transform/impl/memorysafuendecaredthrowableStrategy   rich:extendedDataTable中的java行选择和数据处理   java为什么我需要在volatile上对多个线程使用synchronized?   java尽管构建成功,但为什么会出现此错误?   数组$ArrayList不能转换为java。util。java中的ArrayList   java如何根据泛型类型调用方法?   java将JLabel添加到JPanel,将JPanel添加到JFrame   如果MapStruct中的源为null,则java将父目标设置为null   JavaJBossDrools从DRL插入事实   java不同的JRE安装(windows)