Python Sklearn的NotFittedError问题

Python Sklearn的NotFittedError问题,python,pandas,scikit-learn,Python,Pandas,Scikit Learn,我正在尝试使用sklearn的LinearSVC并将决策树导出为.dot文件。我可以用样本数据拟合分类器,然后在一些测试数据上使用它,但是导出到.dot文件会产生NotFitteError data = pd.read_csv("census-income-data.data", skipinitialspace=True, usecols=list(range(0, 41))) data = data.fillna('Missing value').apply(pp.LabelEncoder(

我正在尝试使用sklearn的LinearSVC并将决策树导出为.dot文件。我可以用样本数据拟合分类器,然后在一些测试数据上使用它,但是导出到.dot文件会产生NotFitteError

data = pd.read_csv("census-income-data.data", skipinitialspace=True, usecols=list(range(0, 41)))
data = data.fillna('Missing value').apply(pp.LabelEncoder().fit_transform)

target = pd.read_csv("census-income-data.data", skipinitialspace=True, usecols=[41])

dataTest = pd.read_csv("census-income-test.test", skipinitialspace=True, usecols=list(range(0, 41)))
dataTest = dataTest.fillna('Missing value').apply(pp.LabelEncoder().fit_transform)

targetTest = pd.read_csv("census-income-test.test", skipinitialspace=True, usecols=[41])
clfSVC = LinearSVC(random_state=0)

clfSVC = clfSVC.fit(data, target.target)
scoreSVC = clfSVC.score(dataTest, targetTest.target)
print(scoreSVC)
tree.export_graphviz(clfSVC, out_file='tree.dot') 
以下是输出:

> Traceback (most recent call last):
  File "D:\Documents\Telecom\IA\ai-person-income\project\sklearn_test.py", line 49, in <module>
    tree.export_graphviz(clfSVC, out_file='tree.dot')
  File "D:\Program Files\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\sklearn\tree\export.py", line 392, in export_graphviz
    check_is_fitted(decision_tree, 'tree_')
  File "D:\Program Files\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site-packages\sklearn\utils\validation.py", line 768, in check_is_fitted
    raise NotFittedError(msg % {'name': type(estimator).__name__})
sklearn.exceptions.NotFittedError: This LinearSVC instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.
>回溯(最近一次呼叫最后一次):
文件“D:\Documents\Telecom\IA\ai person income\project\sklearn\u test.py”,第49行,在
tree.export_graphviz(clfSVC,out_file='tree.dot')
文件“D:\Program Files\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site packages\sklearn\tree\export.py”,第392行,在导出图中
检查是否安装(决策树“树”)
文件“D:\Program Files\WinPython-64bit-3.6.3.0Qt5\python-3.6.3.amd64\lib\site packages\sklearn\utils\validation.py”,第768行,检查是否安装
raise NOTFITTEDEError(msg%{'name':类型(估计器)。\uuuuu name\uuuu})
sklearn.exceptions.NotFitteError:此LinearSVC实例尚未安装。使用此方法之前,请使用适当的参数调用“fit”。
我遗漏了什么?

您正在使用绘制决策树。看看第一个参数:决策树,就像一个

SVM不是决策树!它不是任何类型的树,你不能使用这个函数,它在理论上也没有意义

错误本身基于:

其中查询决策树对象的内部树。这对于支持向量机不存在。

您正在使用绘制决策树。看看第一个参数:决策树,就像一个

SVM不是决策树!它不是任何类型的树,你不能使用这个函数,它在理论上也没有意义

错误本身基于:


其中查询决策树对象的内部树。这对于支持向量机不存在。

sklearn.tree.export_graphviz
中,第一个参数是拟合的决策树。 你给出了一个拟合的估计器,但不是一个决策树。 事实上,
LinearSVC
不是一个决策树。


尝试使用
sklearn.tree.DecisionTreeClassifier
而不是
sklearn.svm.LinearSVC
sklearn.tree.export\u graphviz
中,第一个参数是拟合的决策树。 你给出了一个拟合的估计器,但不是一个决策树。 事实上,
LinearSVC
不是一个决策树。

尝试使用
sklearn.tree.DecisionTreeClassifier
而不是
sklearn.svm.LinearSVC

check_is_fitted(decision_tree, 'tree_')