📜  Scikit学习-约定(1)

📅  最后修改于: 2023-12-03 15:19:59.825000             🧑  作者: Mango

Scikit学习-约定

Scikit-learn是一个流行的机器学习库,提供了丰富的算法和众多的工具来帮助你快速地构建机器学习模型。在这里,我们将探讨一些Scikit-learn的共同约定和最佳实践,以帮助您更好地使用该库。

数据的表示

大多数Scikit-learn的算法都需要数据是一个二维数组(或矩阵),其中每行表示一个样本,每列表示一个特征或属性。这个数组通常被称为自变量(X)或特征矩阵。

import numpy as np
X = np.array([[1, 2, 3], [4, 5, 6]])

变量X现在代表一个2x3的矩阵,其中每行是一个样本,每列是一个特征。

为了更好地理解这种表示方法,我们可以将X表示成一个表格,并给每个样本和每个特征指定一个名称。

| | Feature 1 | Feature 2 | Feature 3 | | --- | --- | --- | --- | | Sample 1 | 1 | 2 | 3 | | Sample 2 | 4 | 5 | 6 |

请注意,每一行都代表一个样本,每一列都代表一个特征。

除了特征矩阵之外,有时候您还需要另一个数组,它包含了因变量(或目标变量)的值。这个数组通常被称为因变量(y)或目标变量。

y = np.array([0, 1])

变量y现在是一个包含两个元素的数组,代表两个样本的因变量值。

为了更好地理解这种表示方法,我们可以将y表示成一个表格。

| | Target | | --- | --- | | Sample 1 | 0 | | Sample 2 | 1 |

模型的训练和评估

在Scikit-learn中,训练一个模型需要完成两个步骤:实例化一个模型对象,然后将特征矩阵X和目标变量y传递给该对象的.fit()方法。

from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X, y)

现在,model变量代表已经训练过的模型对象。要使用该模型来进行预测,只需将预测输入数据(特征矩阵)作为参数传递给.predict()方法即可。

model.predict(np.array([[7, 8, 9]]))

这个方法将返回一个包含一个元素的数组,代表模型对输入的预测结果。

对于大多数Scikit-learn的算法,您可能还会想了解模型的表现如何。为此,可以使用.score()方法。对于分类算法,这个方法返回准确率;而对于回归算法,这个方法返回R方值。

model.score(X, y)
交叉验证

评估模型的性能的一种常用方式是使用交叉验证。在Scikit-learn中,.cross_val_score()函数可以方便地进行交叉验证。

from sklearn.model_selection import cross_val_score
scores = cross_val_score(model, X, y, cv=5)

这个过程将X和y拆分成5个均匀的子集,其中每个子集都用于测试模型,并用剩余的4个子集来训练模型。通过.tfolding cross-validation进行测试的分数。得分数组包含这5个分数。

print(scores)
总结

这只是Scikit-learn的一些共同规范和最佳实践的概述。对于每个算法,您可能会遇到更多的约定和最佳实践。但是,这种常见的表示,训练和评估数据的方法应该已经足够了解并开始构建基于Scikit-learn的机器学习模型。