开始使用 Python 和 sklearn 库进行机器学习。有 2 种方法 fit () 和 predict () 老实说,在某些网站之后,我了解到它们确实非常模糊。
lin_reg.fit(x_train[num_features], y_train)
fit(x,y) 在训练集 X, y 上训练模型(训练) -来自论坛的引用
这是什么意思?
1) 模型查看 x_train,给出一个随机数并将其与 y_train 进行比较?
2) 模型查看 x_train 和 y_train 并试图找到某种关系或调整系数?
在这里,我有一个昏迷。
predict(X) 对数据 X的预测也是一个引用。
也就是说,模型建立起来了,我们可以给它输入数据吗?
y_pred=lin_reg.predict(x_train[num_features])
但这让我很困惑,为什么我们使用相同的数据进行训练和预测?会不会失败,或者模型会记住所有答案并给出 100% 的结果?
确切地。该模型试图找到这样的系数(嗯,以一种原始的方式,实际模型可能比一组简单的系数复杂得多),以便最小化模型从 x_train 数据的预测与 y_train 的实际值之间的差异。
是的是的。
一个足够复杂的模型可以记住所有数据并在训练数据上给出 100% 的准确率,但机器学习的目标不是这个,而是模型在它尚未见过的数据上很好地预测。在这种情况下,他们只是简单地检查模型是否学到了任何东西,否则情况就不同了。碰巧你教了一个模特,但她什么也没学到。所以这只是一个原始的“健全性检查”,而不是真正的“战斗”情况。当然,在现实生活中,他们已经在 x_test 测试数据上进行了预测。
总的来说,机器学习的主题相当复杂,可以研究很多年。你有一个完全初学者的问题,尝试阅读更多的文章和文献,所有这些问题都有答案。最好从“从炉子”开始 - 用理论,而不是立即应用图书馆,根本不了解他们在做什么。
附言
在某些机器学习模型中,这样的事情实际上发生在内部,但并非全部发生。该模型可以以完全不同的方式搜索所需的系数。重要的是要了解模型训练通常是一个复杂的迭代过程。模型以某种方式选择系数(有时是随机的),查看与目标的差异,如果它很大 - “考虑”移动到哪里,尝试稍微不同的系数等,直到它达到合适的结果,或者超出分配给它进行训练的迭代次数。