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

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在ArrayList中比较数字   java在Kotlin中使异步调用同步   让“Scala编程”junit示例在IntelliJ中工作的java问题   java Servlet侦听器未在ContextListener中设置属性   将Microsoft SQL Server数据库连接到我的Java项目   加载资源时出现java“需要注册工厂”异常   java如何使用POI检查excel中的重复记录?   java如何更改机器生成的代码   java如何确保重写的方法是同步的   用Spring编写Hibernate时的java XML奥秘   java管理mysql数据库中存储的用户权限   java如何运行。来自Javascript的jar方法   java我想在Web应用程序中进行身份验证&对桌面应用程序使用相同的凭据。我该怎么做?