在分类或回归中,我们需要我们的模型来学习输入数据(训练数据)。与示例一样,找到最佳模型参数值(在线性回归中)。
当我在机器学习中经历分类部分时,我遇到了下面给出的代码(在MNIST数据集中对“Not-5”进行分类的模型):
此代码来自Github-Aurelien Geron handson-ml-master / 03_Classification.ipynb
from sklearn.base import BaseEstimator
class Never5Classifier(BaseEstimator):
def fit(self, X, y=None): # fit the data
pass
def predict(self, X):
print(X.shape)
print(len(X))
return np.zeros((len(X), 1), dtype=bool)
以下是在模型上执行交叉验证的代码。
never_5_clf = Never5Classifier()
cross_val_score(never_5_clf, X_train, y_train_5, cv=3, scoring="accuracy")
那么这是定制模型,所以我想知道数据是如何拟合的(黑盒内发生了什么)。虽然我遇到了很多模型,但是有一些数学证明/方法来确定参数值。
在上面给出的示例中,您的模型正在尝试对数据集中的特定数字是否标记为数字5
进行分类。这是通过用training set
中仅包含数字5
的training set
喂你的模型来完成的,你的模型正在学习什么是特征(features
),这对于图5
来说是独一无二的。这样,您的模型就是从training set
中包含的每个图像的28x28像素中学习。完成模型训练后(将足够数量的5
样本提供给分类器),您的模型现在可以进行测试了。在测试阶段,您使用的是testing set
,在这种情况下,它将与您的模型从中学习的training set
不同。它的不同之处在于它不仅包含像5
中的数字training set
,而且现在它将包含所有类型的数字(0-9
),并且您的模型将能够将每个样本分类为1,这意味着true
(又名它是5
),或0
是false
(又名它不是5
)。这就是fit()
函数在这种情况下工作的方式,你只用一个数字训练你的模型(在你的情况下它是数字5
),然后你测试你的模型是否能够看到一个随机来自testing set
的数字实际上是5
或其他数字。在你的fit()
上调用training set
之后,你的模型已经学会识别数字5
,但它没有学习3, 8, 4 or 1
是怎么样的,但它可以知道如果它不是5
,而不是它是模型没有的另一个数字学到了。