欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

errorsk-4nQwBFp0LP8NpyK9WwwoT3BlbkFJyH23SKdFWR1P9Sr63sF8

最编程 2024-08-13 10:59:26
...

在本教程中,我将向你展示如何使用Sklearn Fit方法来 "拟合 "Python中的机器学习模型。

因此,我将快速回顾该方法的作用,解释其语法,并向你展示一个如何使用该技术的分步例子。

如果你需要具体的东西,只需点击以下任何一个链接。 该链接将带你到教程中的相应章节。

目录

  • 简介
  • 语法
  • 例子

用Sklearn Fit进行模型拟合的快速介绍

为了理解sklearn Fit函数的作用,你需要对机器学习过程有一些了解。

一般来说,当我们建立一个机器学习模型时,我们有一个机器学习算法和一个训练数据集。

请记住,机器学习算法是一种在我们将其暴露于数据时进行学习的算法。 用汤姆-米切尔的话说:机器学习算法是一种在接触数据时能提高任务性能的算法。

因此,为了让机器学习算法进行学习,它必须暴露在一些数据中。

我们需要用数据来 "训练 "一个机器学习算法。

这就是我们使用训练数据的地方。

训练数据集是一种输入,我们用它来使机器学习算法 "学习",所以它可以提高其在任务上的表现。

An image that shows how we "train" a machine learning model by inputing training data into a machine learning algorithm.

因此,我们有我们的训练数据,我们把它输入机器学习算法,算法 "学习 "如何在这些训练数据的基础上提高其性能。

之后,一旦模型被 "训练 "出来,我们就可以用它来做一些事情,比如进行预测。

Sklearn Fit方法 "训练 "模型

现在我们已经从高层次上回顾了机器学习的过程,让我们再来看看Scikit learn。

Scikit learn是一个用于Python的机器学习工具箱。 因此,它有执行机器学习过程步骤的工具,比如训练一个模型。

scikit learn的 "fit "方法就是这些工具中的一个。在模型被初始化之后,"适合 "方法在训练数据上训练算法。 这就是它所做的一切。

因此,sklearn fit方法使用训练数据作为输入来训练机器学习模型。

一旦训练完成,我们就可以使用其他scikit learning方法--比如预测和评分--继续机器学习过程。

Sklearn Fit方法的语法

现在我们已经回顾了sklearn Fit方法的作用,让我们看看其语法。

请记住,这里的语法解释假定你已经导入了scikit-learn,并且你已经有了一个初始化的模型,比如LinearRegression,RandomForestRegressor, 等等。

拟合 "语法

好的,让我们来看看这个语法。

当我们调用fit 方法时,我们需要从一个现有的机器学习模型的实例中调用它(例如:LinearRegression,LogisticRegression,DecisionTreeRegressor,SVM )。

一旦你初始化了一个模型的实例,那么你就可以调用这个方法。

An image that explains the syntax for how to train a machine learning model in Python the sklearn fit method.

然后,在括号内,你提供训练数据集的特征和目标向量(或标签向量)。 这些数据集有时被称为X_trainy_train

因此,例如,如果你用LinearRegression 模型的一个实例做线性回归,称为my_linear_regressor ,你可能有这样的代码。

my_linear_regressor.fit(X_train, y_train)

在大多数情况下,这就是它的全部内容。

输入数据的格式

fit() 方法的X输入,X_train ,需要是二维的格式,比如二维的numpy数组。

如果X_train 不是二维格式的,你可能会得到一个错误。 在这种情况下,你需要将X_test 的数据重塑为2维。

(我会在接下来的例子部分向你展示)。

多次调用sklearn拟合方法

最后一个注意事项。

如果你多次调用sklearn fit方法,那么你第二次调用fit方法将覆盖你第一次调用该方法时学到的任何东西。

有时,你会有意要这样做,但要小心。 训练一个模型可能需要大量的时间和计算机处理。 多次调用拟合方法可能在时间和资源上都很昂贵。 最起码,它将删除算法在过去学到的任何东西。

例子:如何使用Sklearn Fit

现在我们已经看了语法,让我们看一个如何使用sklearn Fit的例子。

在这里,我将向你展示一个如何使用sklearn fit方法来训练一个模型的例子。

在这个例子中,你需要做几件事,包括运行一些设置代码,然后拟合模型。

步骤

  • 运行设置代码
  • 拟合模型
  • 预测新值

运行设置代码

在你拟合模型之前,你需要做几件事。

我们需要

  • 导入scikit-learn和其他软件包
  • 创建一些训练数据
  • 初始化一个模型

让我们快速完成每一项工作。

导入Scikit Learn和其他软件包

首先,让我们导入我们将使用的包

我们要导入scikit learn。

我们还将导入Numpy和Seaborn。 我们将使用Numpy来创建一些假的训练数据,我们将使用Seaborn来绘制这些数据。

你可以用下面的代码导入这些包。

import sklearn 
import numpy as np
import seaborn as sns

创建训练数据

接下来,我们将创建一些训练数据。

具体来说,我们要创建一些大致上是线性的数据,其中有一点噪音。

为了做到这一点,我们将。

  • 为X轴变量创建51个间隔均匀的数字
  • 创建一个与X轴变量呈线性关系的Y轴变量,并加入一些正态分布的噪声

所以在这里,我们将使用Numpy linspace和Numpy random normal来创建我们的变量x_vary_var

observation_count = 51
x_var = np.linspace(start = 0, stop = 10, num = observation_count)

np.random.seed(22)
y_var = x_var + np.random.normal(size = observation_count, loc = 1, scale = 2)

注意,我们还使用了Numpy random seed,为Numpy的伪随机数生成器设置种子,它被np.random.normal所使用。

让我们也用Seaborn绘制数据。

sns.scatterplot(x = x_var, y = y_var)

输出

An scatterplot of linearly distributed data.  We will be able to use scikit learn to train a model on this data using sklearn fit.

分割数据

我们还将拆分数据集,使用scikit learn的训练-测试拆分函数

from sklearn.model_selection import train_test_split
(X_train, X_test, y_train, y_test) = train_test_split(x_var, y_var, test_size = .2)

这给了我们4个数据集。

  • 训练特征(X_train)
  • 训练目标(y_train)
  • 测试特征(X_test)
  • 测试目标(y_test)

初始化模型

现在,我们将初始化一个模型对象。

这里,为了简单起见,我们将使用DummyRegressor。

from sklearn.dummy import DummyRegressor
dummy_regressor = DummyRegressor()

一旦你运行这个,dummy_regressor 是一个sklearn模型对象,我们可以从中调用fit 方法。

拟合模型

现在,我们要拟合模型。

dummy_regressor.fit(X_train.reshape(-1,1), y_train)

在这里,我们用X_trainy_train 来拟合模型。 你可以看到,拟合的第一个参数是X_train ,第二个参数是y_train

这就是我们在拟合机器学习模型时的典型做法。 我们通常用 "训练 "数据来拟合模型。

注意,X_train已经被重塑为2维格式。

预测

通常,在我们拟合一个模型后,我们会根据测试特征(X_test )来预测新的输出值。(注意,X_test 需要是二维格式的,所以我们要用Numpy reshape来重塑它)。

让我们快速完成这个工作。

dummy_regressor.predict(X_test.reshape(-1,1))

输出

array([5.5831811, 5.5831811, 5.5831811, 5.5831811, 5.5831811, 5.5831811,
       5.5831811, 5.5831811, 5.5831811, 5.5831811, 5.5831811])

在这里,模型对任何输入都预测了数值5.5831811,这可能看起来很奇怪。 这是因为我们使用的是DummyRegressor模型,它的预测值是训练Y值的平均值(y_train的平均值)。

再次强调:这可能看起来很奇怪,但它作为一个基线是很有用的,你可以据此判断其他机器学习模型的性能。

而在这种情况下,它只是一个简单的例子,我们可以在尝试学习如何用sklearn fit来拟合模型时使用。

在本教程中,我已经向你展示了如何使用sklearn fit方法。

但是如果你想掌握Python中的机器学习,还有很多东西需要学习。