<p>当您在训练或使用<code>.fit()</code>方法之前尝试使用分类器的<code>.predict()</code>方法时,<code>NotFittedError</code>会发生。在</p>
<p>以scikit learn中的<a href="https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html" rel="nofollow noreferrer">LinearRegression</a>为例。在</p>
<pre><code>>>> import numpy as np
>>> from sklearn.linear_model import LinearRegression
>>> X = np.array([[1, 1], [1, 2], [2, 2], [2, 3]])
>>> # y = 1 * x_0 + 2 * x_1 + 3
>>> y = np.dot(X, np.array([1, 2])) + 3
>>> reg = LinearRegression().fit(X, y)
>>> reg.score(X, y)
1.0
>>> reg.coef_
array([1., 2.])
>>> reg.intercept_
3.0000...
>>> reg.predict(np.array([[3, 5]]))
array([16.])
</code></pre>
<p>所以用<code>reg = LinearRegression().fit(X, y)</code>行实例化类<code>LinearRegression</code>,然后将其与数据X和y相匹配,其中X是自变量,y是依赖变量。一旦模型在该类中被训练,线性回归的beta系数保存在类属性<code>coef_</code>中,您可以使用<code>reg.coef_</code>来访问它。这就是类如何知道何时使用<code>.predict()</code>类方法来预测。这个类访问这些系数,然后用简单的代数来生成预测。在</p>
<p>回到你的错误。如果你没有将模型拟合到你的训练数据中,那么这个类就没有进行预测所需的必要属性。希望这能澄清类内部的一些混乱,至少在<code>fit()</code>和{<cd10>}方法如何交互方面。在</p>
<p>最后,就像上面所说的,这可以追溯到面向对象编程的基本原理,所以如果您想进一步了解,我将阅读Python如何在scikit学习模型遵循相同行为的情况下处理类</p>