机器学习模型中的数据拟合与预测

时间:2017-12-21 07:21:24

标签: python machine-learning scikit-learn classification

在分类或回归中,我们需要我们的模型来学习输入数据(训练数据)。与示例一样,找到最佳模型参数值(在线性回归中)。

当我在机器学习中经历分类部分时,我遇到了下面给出的代码(在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")

这是定制模型,所以我想知道数据是如何拟合的(黑盒内发生了什么)。虽然我遇到了很多模型,但是有一些数学证明/方法来确定参数值。

1 个答案:

答案 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,那么该模型还没有学到的另一个数字。