小编vle*_*tre的帖子

如何将sklearn决策树规则提取到熊猫布尔条件?

有这么多的帖子这样有关如何提取sklearn决策树的规则,但我找不到任何有关使用熊猫。

这个数据和模型为例,如下

# Create Decision Tree classifer object
clf = DecisionTreeClassifier(criterion="entropy", max_depth=3)

# Train Decision Tree Classifer
clf = clf.fit(X_train,y_train)
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

预期:

关于此示例,有8条规则。

从左到右,请注意该数据帧是 df

r1 = (df['glucose']<=127.5) & (df['bmi']<=26.45) & (df['bmi']<=9.1)
……
r8 =  (df['glucose']>127.5) & (df['bmi']>28.15) & (df['glucose']>158.5)
Run Code Online (Sandbox Code Playgroud)

我不是提取sklearn决策树规则的大师。获取大熊猫布尔条件将有助于我为每个规则计算样本和其他指标。因此,我想将每个规则提取到熊猫的布尔条件。

python machine-learning decision-tree pandas scikit-learn

16
推荐指数
1
解决办法
623
查看次数

使用H2O中的超参数在Sklearn中重新构建XGBoost可以在Python中提高性能

使用H2O Python模块AutoML之后,发现XGBoost位于页首横幅的顶部。然后,我想做的是从H2O XGBoost中提取超参数,并将其复制到XGBoost Sklearn API中。但是,这两种方法之间的性能有所不同:


from sklearn import datasets
from sklearn.model_selection import train_test_split, cross_val_predict
from sklearn.metrics import classification_report

import xgboost as xgb
import scikitplot as skplt
import h2o
from h2o.automl import H2OAutoML
import numpy as np
import pandas as pd

h2o.init()


iris = datasets.load_iris()
X = iris.data
y = iris.target

data = pd.DataFrame(np.concatenate([X, y[:,None]], axis=1)) 
data.columns = iris.feature_names + ['target']
data = data.sample(frac=1)
# data.shape

train_df = data[:120]
test_df = data[120:]

# Import a sample binary outcome train/test …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn h2o xgboost

8
推荐指数
1
解决办法
309
查看次数

在字典中访问熊猫面具

我有一本字典,其中包含多个熊猫掩码作为特定数据帧的字符串,但我找不到使用这些掩码的方法。

这是一个简短的可重现示例:

df = pd.DataFrame({'age' : [10, 24, 35, 67], 'strength' : [0 , 3, 9, 4]})

masks = {'old_strong' : "(df['age'] >18) & (df['strength'] >5)",
        'young_weak' : "(df['age'] <18) & (df['strength'] <5)"}
Run Code Online (Sandbox Code Playgroud)

我想做这样的事情:

df[masks['young_weak']]
Run Code Online (Sandbox Code Playgroud)

但由于掩码是一个字符串,我收到错误

KeyError: "(df['age'] <18) & (df['strength] <5)"
Run Code Online (Sandbox Code Playgroud)

python pandas

4
推荐指数
1
解决办法
955
查看次数

避免在列表理解中两次计算相同的表达式

我在列表理解中使用一个函数和一个 if 函数:

new_list = [f(x) for x in old_list if f(x) !=0]
Run Code Online (Sandbox Code Playgroud)

令我烦恼的是,该表达式f(x)在每个循环中计算两次。

有没有办法以更清洁的方式做到这一点?类似于存储值或在列表理解的开头包含 if 语句。

python list-comprehension python-3.x

2
推荐指数
1
解决办法
812
查看次数

如果内核中断则执行代码(Jupyter notebook 中的 Python)

我正在 Jupyter 笔记本中运行一个函数,我想知道如果用户中断内核是否可以执行一些代码。

例如,如果你有这个功能:

import time
def time_sleep():
    time.sleep(5)
    print('hello')
Run Code Online (Sandbox Code Playgroud)

print('cell terminated')如果单元格被中断,我可以添加运行吗?

python jupyter-notebook

2
推荐指数
1
解决办法
342
查看次数