如何将分类器和参数转储到表中?

时间:2017-06-30 13:59:14

标签: python mysql machine-learning scikit-learn

我试图将分类器及其参数转储到表中:

from sklearn.tree import DecisionTreeClassifier
from sklearn import datasets

iris = datasets.load_iris()
X, y = iris.data, iris.target
clf = DecisionTreeClassifier().fit(X, y)

当我打印clf时,我得到以下内容:

DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,
            max_features=None, max_leaf_nodes=None,
            min_impurity_split=1e-07, min_samples_leaf=1,
            min_samples_split=2, min_weight_fraction_leaf=0.0,
            presort=False, random_state=None, splitter='best')

如何将其转储到.txt或甚至更好地转储到包含此列信息的表中。例如,在Algorithm Name列下会显示C4.5等...

我尝试使用from sklearn.externals import joblib并执行了:joblib.dump(clf, "outputfile.txt")。我会搞乱文本或非ASCII字符。

理想输出:table

我理解这可能是一个很大的提取,但我的问题是如何正确输出分类器并捕获所有必需的信息。

1 个答案:

答案 0 :(得分:1)

如果你想加载对象/模型,那么joblib就是这种方式(或者是pickle,但scikit建议使用joblib)。 如果您想保留参数并使用它们:

from sklearn.tree import DecisionTreeClassifier
import json

dt = DecisionTreeClassifier()
# do your stuff 
# ... 
# you can dump the parameters to json or to any other type of storage, load them and re use them.
with open("somefile.json", "wb") as f:
    json.dump(dt.get_params(), f)

# ... 
# and load them...with some proper error handling...
with open("somefile.json") as f:
    dt.set_params(**json.load(f))

一般来说,根据您的要求,您必须做一些自定义的事情。 (我也正在实现一些东西来保存数据库中的信息,以便能够重用它,但我还没有为joblib找到解决方法)