【问题标题】:as_formula specifier for sklearn.tree.decisiontreeclassifier in Python?Python中sklearn.tree.decisiontreeclassifier的as_formula说明符?
【发布时间】:2015-10-31 10:16:18
【问题描述】:

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

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

但我更喜欢像

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

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

【问题讨论】:

    标签: python scikit-learn decision-tree patsy


    【解决方案1】:

    感谢您的信息。虽然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']]。可能看起来很明显,但是把事情搞砸的简单方法。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2015-11-15
        • 2015-10-10
        • 2017-11-16
        • 1970-01-01
        • 2012-11-03
        • 2015-12-02
        • 1970-01-01
        • 2014-01-07
        • 2013-08-11
        相关资源
        最近更新 更多