我试图将分类器及其参数转储到表中:
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字符。
我理解这可能是一个很大的提取,但我的问题是如何正确输出分类器并捕获所有必需的信息。
答案 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找到解决方法)