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)
也许更方便的是 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']]. 可能看起来很明显,但却很容易把事情搞砸。
我很好奇 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)
也许更方便的是 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']]. 可能看起来很明显,但却很容易把事情搞砸。