在分类或回归中,我们需要我们的模型来学习输入数据(训练数据)。与示例一样,找到最佳模型参数值(在线性回归中)。
当我在机器学习中经历分类部分时,我遇到了下面给出的代码(在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")
这是定制模型,所以我想知道数据是如何拟合的(黑盒内发生了什么)。虽然我遇到了很多模型,但是有一些数学证明/方法来确定参数值。
答案 0 :(得分:0)
在上面给出的示例中,您的模型正在尝试对数据集中的特定数字是否标记为数字5
进行分类。这是通过向您的模型提供仅包含training set
的{{1}}来完成的,此5
,您的模型正在了解哪些特征(training set
),即图features
是唯一的。这样,您的模型就会从5
中包含的每个图像中学习28x28像素。完成模型训练后(将足够的数字training set
样本提供给分类器),您的模型现在可以进行测试了。在测试阶段,您使用的是5
,在这种情况下,它将与您的模型所学的testing set
不同。它的不同之处在于它不会像training set
中那样只包含数字5
,但现在它将包含所有类型的数字(training set
),以及您的模型将能够使用1表示每个样本,这意味着0-9
(也就是true
},或5
0
(也就是说{}}一个false
)。这就是5
函数在这种情况下工作的方式,你只用一个数字训练你的模型(在你的情况下是数字fit()
),之后你正在测试你的model能够查看5
中的随机数字是否实际为testing set
或其他数字。在5
上致电fit()
后,您的模型已经学会识别数字training set
,但它没有了解5
的样子,但它可以知道如果不是3, 8, 4 or 1
,那么该模型还没有学到的另一个数字。