as_formula Python 中 sklearn.tree.decisiontreeclassifier 的说明符?

as_formula specifier for sklearn.tree.decisiontreeclassifier in Python?

我很好奇 Python 中的 sklearn.tree.decisiontreeclassifier 是否有一个 as_formula 说明符(如 statsmodels 中的说明符)或某种破解方法。目前,我必须使用

clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)

但我更喜欢

clf = clf.fit(formula='Y ~ X', data=df)

原因是我想指定多个 X 而不必进行大量数组整形。谢谢。

目前还不可能,但如果有一个 scikit-learn 的 patsy 界面就太好了。不过,我认为目前没有人在研究它。

感谢您提供信息。尽管 sklearn 当前没有 Patsy 接口,但 Patsy 可以轻松提供我需要的功能。举个例子...

from sklearn import tree
from patsy import dmatrix

red = [1,0,0,0,0,1,1,0,0,1,1,0]
green = [0,0,0,1,0,1,1,0,0,1,1,0]
blue = [0,0,1,1,0,0,0,1,0,0,0,0]

y = [0,0,0,0,0,1,1,0,0,1,1,0]

X = dmatrix('red + green + blue + 0')

dt_clf = tree.DecisionTreeClassifier()
dt_clf = dt_clf.fit(X, y)

pred_r = [1,1,0,0,1,1,0,0,0,0,0,0]
pred_g = [1,1,0,0,1,1,0,0,0,0,0,0]
pred_b = [0,0,1,1,0,0,0,1,0,0,0,0]

test = dmatrix('pred_r + pred_g + pred_b + 0')
dt_clf.predict(test) 

也许更方便的是 sklearnpandas 配合得很好。使用与上述相同的数据...

import pandas as pd

df = pd.DataFrame()
df['red'] = red
df['green'] = green
df['blue'] = blue
df['y'] = y

dt_clf = dt_clf.fit(df[['red','green','blue']], df['y'])
dt_clf.predict(test)

希望这对和我情况相同的人有所帮助。

注意:请务必确保 X 的顺序保持不变。例如,不要训练为 df[['red','green','blue']] 然后预测 (df[['blue','green','red']]. 可能看起来很明显,但却很容易把事情搞砸。