感谢您的信息。虽然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)
也许更方便的是sklearn 与pandas 配合得很好。使用与上面相同的数据...
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']]。可能看起来很明显,但是把事情搞砸的简单方法。