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

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第三方库


热门话题
Gson类中的java验证错误   If和elseif之间的java差异?   字典Java8地图。输入比较器   java连接到远程计算机以获得WMI支持   java如何使用改型处理JSON对象中的空值   在Java中使用Comparator时不可编译的源代码   java将Jar添加到JSP的运行时路径   带有随机对象的while循环的java大O时间复杂性   java可以在不考虑参数的情况下模拟方法吗?   java我有一个简单的代码,它不工作。无法修复错误“println”   向eclipse添加Xively java库   java是否可以启用本机代码的缓存?   全局变量如何在Java中的所有类之间共享要使用的语言环境?   Java内存游戏如何翻转单个卡?