【 Python 全栈开发 - 人工智能篇 - 41 】线性回归算法

news2024/11/26 22:39:09

文章目录

  • 一、简介
    • 1.1 什么是线性回归?
    • 1.2 线性回归在人工智能中的应用
      • 预测分析
      • 特征工程
      • 异常检测
    • 1.3 Python 在人工智能中的角色
      • 数据处理和分析
      • 机器学习和深度学习
      • 自然语言处理
  • 二、理解线性回归
    • 2.1 线性回归的基本原理
    • 2.2 线性回归模型的假设
    • 2.3 线性回归的评估指标
  • 三、准备数据
    • 3.1 数据预处理
    • 3.2 特征工程
    • 3.3 数据集划分
  • 四、实现线性回归模型
    • 4.1 导入必要的库
    • 4.2 数据加载与可视化
    • 4.3 构建线性回归模型
    • 4.4 训练与优化模型
    • 4.5 模型评估与预测
  • 五、线性回归的改进和扩展
    • 5.1 多项式回归
    • 5.2 岭回归和Lasso回归
    • 5.3 弹性网络回归
    • 5.4 其他回归算法的比较
  • 六、模型性能评估与改进
    • 6.1 模型评估指标
    • 6.2 交叉验证
    • 6.3 模型正则化
    • 6.4 模型调优技巧
  • 七、应用案例:房价预测
    • 7.1 数据集介绍
    • 7.2 数据预处理
    • 7.3 构建线性回归模型
    • 7.4 模型评估与改进


一、简介

1.1 什么是线性回归?

线性回归是一种统计学和机器学习中常用的预测方法,用于建立输入变量(自变量)和输出变量(因变量)之间的线性关系模型。它假设输入变量与输出变量之间存在线性关系,通过拟合一条直线或超平面来预测未知数据的输出。

线性回归的基本形式可以表示为:y = mx + b,其中 y 是输出变量,x 是输入变量,m 是斜率,b 是截距。通过找到最佳拟合线,可以使用已知数据来预测新的未知数据。

1.2 线性回归在人工智能中的应用

线性回归在人工智能领域有广泛的应用。它可以用于解决许多问题,包括但不限于以下几个方面:

预测分析

线性回归可以用于预测未来的趋势和行为。例如,在金融领域,可以使用线性回归来预测股票价格的变化。在销售领域,可以使用线性回归来预测产品销售量的增长趋势。通过分析历史数据并建立线性模型,可以做出有根据的预测和决策。

特征工程

线性回归可以用于特征工程,即选择最相关的特征来进行预测。通过计算特征之间的相关性和权重,可以确定对输出变量影响最大的特征。这有助于理解数据集中的关键因素,并提高模型的准确性和解释性。

异常检测

线性回归可以用于检测异常值。通过比较实际观测值和线性回归模型的预测值,可以发现偏离模型的异常数据点。这在数据清洗和异常检测的过程中非常有用,可以帮助识别潜在的错误或异常情况。

1.3 Python 在人工智能中的角色

Python 是一种流行的编程语言,在人工智能领域中扮演着重要的角色。以下是 Python 在人工智能中的几个方面的应用:

数据处理和分析

Python 提供了强大的数据处理和分析库,如NumPyPandas。这些库提供了广泛的函数和工具,用于处理和分析大规模的数据集。Python 还支持各种数据可视化库,如MatplotlibSeaborn,可以帮助用户更好地理解和展示数据。

机器学习和深度学习

Python 拥有丰富的机器学习和深度学习库,如Scikit-learnTensorFlow。这些库提供了各种算法和工具,用于构建和训练机器学习模型。Python 的简洁语法和丰富的库生态系统使其成为开发人员首选的工具之一。

自然语言处理

Python 在自然语言处理(NLP)领域也扮演着重要角色。有许多 Python 库可用于处理文本数据、执行文本分类和情感分析,以及构建聊天机器人等应用。常用的库包括NLTKspaCy等。

总之,Python 在人工智能中的灵活性和强大的库生态系统使其成为开发人员进行线性回归等任务的理想选择。其简洁易读的语法使得开发人员能够快速实现并调试复杂的人工智能算法。


二、理解线性回归

2.1 线性回归的基本原理

线性回归是一种常见的机器学习算法,用于建立输入变量和目标变量之间的线性关系。它假设输入变量和目标变量之间存在一个线性函数关系,并通过最小化预测值与实际值之间的差异来找到最佳拟合直线。线性回归的基本原理如下:

  1. 数据准备:收集包含输入变量和目标变量的数据集,将其划分为训练集和测试集。

  2. 特征选择:选择与目标变量相关性较高的输入变量作为特征。

  3. 模型训练:使用训练集对线性回归模型进行训练,通过最小化预测值与实际值之间的平方差来确定最佳拟合直线的参数。

  4. 模型评估:使用测试集评估模型的性能,常用的评估指标包括均方误差(Mean Squared Error,MSE)和决定系数(Coefficient of Determination)等。

  5. 模型应用:通过线性回归模型进行预测,根据输入变量得出对应的目标变量的值。

2.2 线性回归模型的假设

线性回归模型基于以下假设:

  1. 线性关系假设:输入变量和目标变量之间存在线性关系,即可以用一条直线描述它们之间的关系。

  2. 独立性假设:输入变量之间相互独立,即它们之间没有明显的相关性。

  3. 同方差性假设:对于给定的输入变量,目标变量的方差在不同输入取值处是相同的。

  4. 无多重共线性假设:输入变量之间不存在高度相关性,即它们之间不会出现线性相关性。

  5. 正态性假设:目标变量在给定的输入取值处呈正态分布。

这些假设在实际应用中可能不完全成立,但线性回归仍然是一个简单而有效的工具。

2.3 线性回归的评估指标

线性回归模型的性能可以通过多种评估指标来衡量。以下是常用的评估指标:

  1. 均方误差(Mean Squared ErrorMSE):计算预测值与实际值之间的平均平方差。MSE越小,表示模型的预测效果越好。

  2. 均方根误差(Root Mean Squared ErrorRMSE):计算预测值与实际值之间的平均平方根差。RMSEMSE的基础上取平方根,可将误差转化为与目标变量相同的单位。

  3. 决定系数(Coefficient of Determination):表示模型对目标变量变异性的解释能力。取值范围为 0 到 1,越接近 1 表示模型对目标变量的解释能力越强。

这些评估指标可以帮助我们评估线性回归模型的拟合程度和预测能力,从而进行模型选择和性能改进。

通过理解线性回归的基本原理、模型假设和评估指标,我们可以更好地应用 Python 中的人工智能线性回归算法,并将其应用于实际问题中的数据建模和预测分析任务中。


三、准备数据

3.1 数据预处理

在进行线性回归之前,我们需要对数据进行预处理。数据预处理是为了清洗和转换原始数据,以便使其适用于机器学习算法。在 Python 中,我们可以使用一些库和工具来完成数据预处理的任务,如pandasscikit-learn

首先,我们需要导入所需的库:

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

接下来,我们可以使用pandas库来加载我们的数据集。假设我们的数据集存储在一个名为data.csv的文件中:

data = pd.read_csv('data.csv')

一旦我们加载了数据集,我们可以进行一些基本的数据探索,例如查看数据的前几行、统计摘要等。

在进行线性回归之前,我们通常需要对数据进行特征缩放。这是因为不同特征可能具有不同的尺度,而线性回归模型对于尺度不一致的特征可能表现不佳。我们可以使用StandardScaler来标准化特征:

scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)

3.2 特征工程

特征工程是指将原始数据转换为更具有表达力和预测能力的特征的过程。在进行线性回归之前,我们可能需要对原始特征进行一些转换或创建新的特征。

例如,我们可以通过使用多项式特征转换来引入多项式项。在 Python 中,我们可以使用PolynomialFeatures来进行多项式特征转换:

from sklearn.preprocessing import PolynomialFeatures

poly_features = PolynomialFeatures(degree=2)
data_poly = poly_features.fit_transform(data_scaled)

除了多项式特征转换,我们还可以进行其他类型的特征工程,如特征选择、特征组合等,以提高模型的性能。

3.3 数据集划分

在进行线性回归之前,我们需要将数据集划分为训练集和测试集。训练集用于训练模型的参数,而测试集用于评估模型的性能。

我们可以使用train_test_split函数来将数据集划分为训练集和测试集:

X = data_poly[:, :-1]  # 特征变量
y = data_poly[:, -1]   # 目标变量

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

在上述代码中,我们将数据集划分为训练集和测试集,其中测试集的大小占总数据集的 20%。我们还使用了随机种子random_state来确保每次运行代码时得到的划分结果是一致的。

通过以上步骤,我们完成了数据的准备工作,包括数据预处理、特征工程和数据集划分。现在我们可以继续进行线性回归模型的建立和训练。


四、实现线性回归模型

4.1 导入必要的库

在实现线性回归模型之前,我们首先需要导入一些必要的库。Python 拥有丰富的机器学习和数据处理库,我们将使用其中的一些库来完成线性回归任务。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

以上代码导入了numpy用于数值计算,pandas用于数据处理,matplotlib用于数据可视化,train_test_split用于划分训练集和测试集,LinearRegression用于构建线性回归模型,mean_squared_error用于评估模型的均方误差。

4.2 数据加载与可视化

在构建线性回归模型之前,我们需要加载数据并进行可视化分析,以更好地理解数据的特征和关系。

# 加载数据
data = pd.read_csv('data.csv')

# 数据可视化
plt.scatter(data['X'], data['Y'])
plt.xlabel('X')
plt.ylabel('Y')
plt.show()

以上代码使用pandas库加载名为data.csv的数据文件,并使用matplotlib库绘制了数据的散点图,其中X轴表示自变量,Y轴表示因变量。

4.3 构建线性回归模型

在构建线性回归模型之前,我们需要将数据划分为训练集和测试集,并准备自变量 X 和因变量 Y 的数据。

# 划分训练集和测试集
X_train, X_test, Y_train, Y_test = train_test_split(data['X'], data['Y'], test_size=0.2)

# 调整X和Y的形状
X_train = X_train.values.reshape(-1, 1)
X_test = X_test.values.reshape(-1, 1)
Y_train = Y_train.values.reshape(-1, 1)
Y_test = Y_test.values.reshape(-1, 1)

# 构建线性回归模型
model = LinearRegression()

以上代码使用train_test_split函数将数据划分为 80% 的训练集和 20% 的测试集,并通过values.reshape(-1, 1)调整自变量 X 和因变量 Y 的形状。然后,我们使用LinearRegression构造了一个线性回归模型。

4.4 训练与优化模型

在构建好线性回归模型后,我们需要使用训练集数据对模型进行训练,并进行模型优化。

# 训练模型
model.fit(X_train, Y_train)

# 获取模型参数
coefficients = model.coef_
intercept = model.intercept_

# 打印模型参数
print("Coefficients:", coefficients)
print("Intercept:", intercept)

以上代码使用fit函数对线性回归模型进行训练,并通过coef_intercept_属性获取模型的系数和截距。最后,我们打印了模型的参数。

4.5 模型评估与预测

在完成模型的训练和优化后,我们可以使用测试集数据对模型进行评估,并进行预测。

# 在测试集上进行预测
Y_pred = model.predict(X_test)

# 计算均方误差
mse = mean_squared_error(Y_test, Y_pred)

# 打印均方误差
print("Mean Squared Error:", mse)

以上代码使用predict函数对测试集数据进行预测,并使用mean_squared_error函数计算模型的均方误差。最后,我们打印了均方误差的值。


五、线性回归的改进和扩展

线性回归是机器学习中最基本的回归算法之一,用于预测一个或多个连续型目标变量与一个或多个自变量之间的关系。在 Python 中,我们可以使用人工智能库来实现线性回归算法,并进行改进和扩展。

5.1 多项式回归

多项式回归是线性回归的一种改进方法,它通过添加多项式特征来扩展模型的能力,从而更好地拟合非线性数据。我们可以使用Scikit-learn库中的PolynomialFeatures类来实现多项式回归。

下面是一个简单的示例代码,展示如何使用多项式回归来拟合一个非线性的数据集:

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
import matplotlib.pyplot as plt

# 创建一个非线性的数据集
X = np.linspace(-np.pi, np.pi, 100)
y = np.sin(X) + np.random.normal(0, 0.2, 100)

# 将特征转换为多项式特征
poly = PolynomialFeatures(degree=3)
X_poly = poly.fit_transform(X[:, np.newaxis])

# 使用线性回归拟合多项式特征
model = LinearRegression()
model.fit(X_poly, y)

# 预测并绘制结果
X_test = np.linspace(-np.pi, np.pi, 1000)
X_test_poly = poly.transform(X_test[:, np.newaxis])
y_pred = model.predict(X_test_poly)

plt.scatter(X, y, label='Actual')
plt.plot(X_test, y_pred, color='red', label='Predicted')
plt.legend()
plt.show()

在上述代码中,我们首先创建了一个非线性的数据集,然后使用PolynomialFeatures将特征转换为三次多项式特征。接下来,我们使用归模型LinearRegression拟合这些多项式特征,并进行预测。最后,我们使用Matplotlib库将实际数据和预测结果进行可视化展示。

5.2 岭回归和Lasso回归

岭回归和Lasso回归是线性回归的正则化方法,用于处理高维数据和共线性特征。它们通过添加正则化项来约束模型的复杂度,防止过拟合。在 Python 中,我们可以使用Scikit-learn库中的RidgeLasso类来实现岭回归和Lasso回归。

下面是一个简单的示例代码,展示如何使用岭回归和Lasso回归来拟合一个具有共线性特征的数据集:

import numpy as np
from sklearn.linear_model import Ridge, Lasso
import matplotlib.pyplot as plt

# 创建一个具有共线性特征的数据集
np.random.seed(0)
X = np.random.randn(100, 2)
y = 2 * X[:, 0] + 3 * X[:, 1] + np.random.normal(0, 1, 100)

# 使用岭回归拟合数据
ridge = Ridge(alpha=0.5)
ridge.fit(X, y)
ridge_coef = ridge.coef_

# 使用Lasso回归拟合数据
lasso = Lasso(alpha=0.5)
lasso.fit(X, y)
lasso_coef = lasso.coef_

print("Ridge Coefficients:", ridge_coef)
print("Lasso Coefficients:", lasso_coef)

在上述代码中,我们首先创建了一个具有共线性特征的数据集。然后,我们使用Ridge类和Lasso类分别拟合数据,并输出得到的回归系数。通过调节alpha参数的值,我们可以控制正则化的程度。

5.3 弹性网络回归

弹性网络回归是岭回归和Lasso回归的组合,它综合了两者的优点。它不仅可以处理高维数据和共线性特征,还能够自动选择相关特征。在 Python 中,我们同样可以使用Scikit-learn库中的ElasticNet类来实现弹性网络回归。

下面是一个简单的示例代码,展示如何使用弹性网络回归来拟合一个具有共线性特征的数据集:

import numpy as np
from sklearn.linear_model import ElasticNet
import matplotlib.pyplot as plt

# 创建一个具有共线性特征的数据集
np.random.seed(0)
X = np.random.randn(100, 2)
y = 2 * X[:, 0] + 3 * X[:, 1] + np.random.normal(0, 1, 100)

# 使用弹性网络回归拟合数据
elastic_net = ElasticNet(alpha=0.5, l1_ratio=0.5)
elastic_net.fit(X, y)
elastic_net_coef = elastic_net.coef_

print("ElasticNet Coefficients:", elastic_net_coef)

在上述代码中,我们同样创建了一个具有共线性特征的数据集。然后,我们使用ElasticNet类拟合数据,并输出得到的回归系数。通过调节alpha参数和l1_ratio参数的值,我们可以控制正则化的程度和 L1 正则化与 L2 正则化的比例。
Python中除了线性回归外,还有许多其他回归算法可供选择。以下是对其中几种常见回归算法的比较。

5.4 其他回归算法的比较

  1. 多项式回归:多项式回归是一种非线性回归算法,它通过添加高次项来拟合数据中的曲线。与线性回归相比,多项式回归可以更好地适应非线性关系。然而,当多项式次数过高时,模型可能过拟合数据。

  2. 支持向量回归(SVR):SVR 是一种基于支持向量机的回归算法。它通过寻找一个最优超平面来拟合数据,使得超平面与实际数据之间的误差最小化。SVR 适用于处理非线性关系,并且对于离群点具有较好的鲁棒性。

  3. 决策树回归:决策树回归使用决策树模型来进行回归预测。它将数据划分为不同的区域,并为每个区域分配一个预测值。决策树回归易于理解和解释,适用于处理非线性关系。然而,它对输入数据的微小变化敏感,容易过拟合。

  4. 随机森林回归:随机森林回归是一种集成学习方法,它由多个决策树组成。它通过对多个决策树的预测结果进行平均来提高回归性能。随机森林回归具有较好的泛化能力和鲁棒性,适用于处理大量特征和样本的复杂问题。

  5. 梯度提升回归(GBR):GBR 是一种集成学习算法,通过迭代训练弱回归模型来提高预测性能。它通过逐步减小损失函数的梯度来优化模型,适用于处理各种类型的数据。GBR 具有较高的预测准确性,但对超参数的选择较为敏感。


六、模型性能评估与改进

在机器学习中,评估模型的性能是非常重要的,因为它可以帮助我们了解模型的表现和效果。

6.1 模型评估指标

模型评估指标是用来度量模型预测结果的准确性和性能的指标。在线性回归中,常用的评估指标包括均方误差(Mean Squared ErrorMSE)、均方根误差(Root Mean Squared ErrorRMSE)、平均绝对误差(Mean Absolute ErrorMAE)等。下面是一个使用线性回归模型进行房价预测的例子,同时计算并输出了 MSE、RMSE 和 MAE 指标。

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, mean_absolute_error

# 训练集和测试集
X_train = np.array([[1], [2], [3], [4], [5]])
y_train = np.array([2, 4, 6, 8, 10])
X_test = np.array([[6], [7], [8], [9], [10]])
y_test = np.array([12, 14, 16, 18, 20])

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test)

# 计算评估指标
mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
mae = mean_absolute_error(y_test, y_pred)

print("MSE:", mse)
print("RMSE:", rmse)
print("MAE:", mae)

6.2 交叉验证

交叉验证是一种用来评估模型性能的技术,它将数据集划分为若干个子集,然后使用其中一部分作为测试集,剩余部分作为训练集,多次重复这个过程以得到稳定的评估结果。交叉验证可以帮助我们更好地评估模型的泛化能力。下面是一个使用交叉验证评估线性回归模型的例子。

from sklearn.model_selection import cross_val_score

# 创建线性回归模型
model = LinearRegression()

# 进行交叉验证
scores = cross_val_score(model, X_train, y_train, cv=5, scoring='neg_mean_squared_error')

# 转换为正数
mse_scores = -scores

# 计算均值和标准差
mean_mse = np.mean(mse_scores)
std_mse = np.std(mse_scores)

print("Mean MSE:", mean_mse)
print("Std MSE:", std_mse)

6.3 模型正则化

模型正则化是一种用来防止过拟合的技术,在线性回归中,常用的正则化方法包括 L1 正则化和 L2 正则化。正则化通过向损失函数中添加正则化项来限制模型的复杂度,使模型更加简单。下面是一个使用 L2 正则化改进线性回归模型的例子。

from sklearn.linear_model import Ridge

# 创建带有L2正则化的线性回归模型
model = Ridge(alpha=0.1)

# 训练模型
model.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test)

mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
mae = mean_absolute_error(y_test, y_pred)

print("MSE:", mse)
print("RMSE:", rmse)
print("MAE:", mae)

6.4 特征选择
特征选择是一种用来选择对模型预测结果有重要影响的特征的技术。在线性回归中,我们可以使用相关系数或者特征的重要性来选择特征。下面是一个使用特征选择改进线性回归模型的例子。

from sklearn.feature_selection import SelectKBest, f_regression

# 特征选择
selector = SelectKBest(score_func=f_regression, k=1)

# 在训练集上进行特征选择
X_train_selected = selector.fit_transform(X_train, y_train)

# 在测试集上进行特征选择
X_test_selected = selector.transform(X_test)

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_train_selected, y_train)

# 在测试集上进行预测
y_pred = model.predict(X_test_selected)

mse = mean_squared_error(y_test, y_pred)
rmse = np.sqrt(mse)
mae = mean_absolute_error(y_test, y_pred)

print("MSE:", mse)
print("RMSE:", rmse)
print("MAE:", mae)

6.4 模型调优技巧

  1. 特征选择:选择合适的特征对于线性回归模型的性能至关重要。可以使用特征选择方法,如相关性分析、递归特征消除等,来确定对目标变量有最大影响的特征。

  2. 数据预处理:在训练线性回归模型之前,需要对数据进行预处理。这包括处理缺失值、处理异常值、标准化数据等。可以使用 Python 中的pandasscikit-learn库来进行数据预处理。

  3. 分离训练集和测试集:为了评估线性回归模型的性能,需要将数据集划分为训练集和测试集。训练集用于训练模型,测试集用于评估模型的泛化能力。可以使用scikit-learn库中的train_test_split函数来实现数据集的划分。

  4. 模型训练与评估:使用训练集来训练线性回归模型,并使用测试集来评估模型的性能。可以使用scikit-learn库中的LinearRegression类来构建和训练线性回归模型,并使用评估指标如均方误差(Mean Squared Error)和决定系数(Coefficient of Determination)来评估模型的拟合程度。

  5. 正则化技术:为了解决线性回归模型中的过拟合问题,可以应用正则化技术,如岭回归(Ridge Regression)和Lasso回归(Lasso Regression)。这些技术可以通过惩罚项来调整模型的复杂度,防止模型过度拟合训练数据。

  6. 特征扩展与变换:有时候,线性回归模型无法准确地拟合非线性关系。在这种情况下,可以通过对特征进行扩展和变换来引入非线性。常见的方法包括多项式特征扩展和对数变换。

  7. 交叉验证:为了更准确地评估线性回归模型的性能,可以使用交叉验证方法。交叉验证将数据集划分为多个子集,并多次训练和评估模型,以获得更稳定的性能评估结果。scikit-learn库提供了交叉验证的功能。

  8. 超参数调优:线性回归模型有一些超参数需要调优,如正则化参数、特征扩展的阶数等。可以使用网格搜索(Grid Search)或随机搜索(Random Search)等技术来寻找最佳的超参数组合。


七、应用案例:房价预测

7.1 数据集介绍

数据(house_prices.csv):
在这里插入图片描述
在这里插入图片描述

7.2 数据预处理

首先,我们需要导入所需的库和数据集。

# 导入库
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 读取数据集
data = pd.read_csv('house_prices.csv')

# 划分自变量和因变量
X = data[['area', 'bedrooms', 'bathrooms']]
y = data['price']

我们首先导入了pandasnumpy库,用于数据处理和数学运算。然后,我们使用pandas库的read_csv函数读取了包含房屋信息的数据集,并将其存储在data变量中。

接下来,我们将数据集划分为自变量(房屋面积、卧室数量和浴室数量)和因变量(房屋价格)。自变量是我们用来预测因变量的特征。

接下来,我们需要将数据集分为训练集和测试集,以便评估模型的性能。

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

我们使用train_test_split函数将数据集划分为训练集和测试集。在这里,我们将80%的数据用于训练,20%的数据用于测试,并设置了一个随机种子以确保结果的可重复性。

7.3 构建线性回归模型

接下来,我们将使用 Python 中的机器学习库来构建线性回归模型。我们可以使用LinearRegression类来构建线性回归模型,并在训练集上进行拟合。

# 构建线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)

我们创建了一个LinearRegression对象,并使用fit方法将模型与训练数据拟合。

7.4 模型评估与改进

我们可以使用测试集对模型进行评估,并考虑对模型进行改进的方法。

# 在测试集上进行预测
y_pred = model.predict(X_test)

# 评估模型性能
from sklearn.metrics import mean_squared_error, r2_score

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print('均方误差(MSE):', mse)
print('决定系数(R^2):', r2)

我们使用模型对测试集进行预测,并使用均方误差(MSE)和决定系数(R2)来评估模型的性能。MSE衡量预测值与真实值之间的平均误差,而R2表示模型对观测数据的拟合程度。

根据评估结果,我们可以确定模型的性能,并可能采取一些改进措施,如添加更多特征、使用正则化等方法来提高预测的准确性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/742583.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

string——find(),rfind()

文章目录 find(正向查找) 正向查抄,会返回要找的子串中第一字符再父串中的下标值 rfind(逆向查找) std::string url "https://img.bizhizu.com/2015/1231/hskdkfl.jpg";int begin url.find(/); int end …

如何写一个springboot-starter

使用场景 在目前广泛的微服务治理环境下,我们所开发的代码模块,越来越关注于某一项功能而不是宽泛的整个系统的功能。 所以在我们进行服务拆分的时候,经常会遇到这么一个问题,某些会被不同的模块重复使用,为了避免代…

Vue 3 中使用 Chart.js

要在 Vue 3 中使用 Chart.js&#xff0c;您需要先安装和引入 Chart.js 库&#xff0c;并创建一个 Vue 组件来承载图表。 1. 安装库 shell cnpm i chart.js moment chartjs-adapter-moment 2. 代码示例 <template><div><canvas id"chartCanvas">…

数字孪生系统如何整合CesiumJS?之后会产生什么效果?

数字孪生有关的项目中&#xff0c;智慧城市一直是一个比较重要的类型&#xff0c;但是这类智慧城市项目往往包含了大量的GIS相关数据&#xff0c;例如倾斜摄影、DEM、DOM、地形数据等。这时&#xff0c;将GIS系统融合进数字孪生系统的需求就出现了。 这时一个新的问题就出现了…

Qt(Day5)

写TCP服务器与客户端&#xff1a;

接口测试模块完整版

先上代码 #data_test.py from openpyxl import load_workbook class Date_test():classmethoddef Date_test_1(cls):"""配置文件读取模块:return:"""wb load_workbook("data_test.xlsx")ws wb["Sheet1"]url http://loca…

第五节 配置SpringBootAdmin电子邮件通知

本来想用一节就写完SpringBootAdmin的&#xff0c;但随着研究的深入发现一节应该是不够的&#xff0c;网上的资料也不会非常系统&#xff0c;官网的例子有些已经好几年没更新了&#xff0c;所以接下来还是系统性的来写下吧 第一节 完成基础配置&#xff0c;暴露所有端点 第二节…

智能机器人嵌入ChatGPT会给社会带来哪些进步

智能机器人技术在当今世界中扮演着越来越重要的角色&#xff0c;而其中一个令人印象深刻的例子就是ChatGPT。ChatGPT是一种基于人工智能的对话系统&#xff0c;它利用强大的自然语言处理和生成模型&#xff0c;可以与人类进行自然而流畅的对话。ChatGPT内置了智能机器人技术&am…

哈达玛矩阵乘法

哈达玛矩阵乘法 作者: 赵晓鹏时间限制: 1S章节: 递归与分治 输入说明 : 见问题描述。 输出说明 : 见问题描述。 输入范例 : 1 4 -6 输出范例 : -2 10 #include <iostream> #include <vector> using namespace std; vector<int>res; void cal(int len…

汽车EBSE测试流程分析(三):通过系统调研确定改进方案

EBSE专题连载共分为“五个”篇章。此文为该连载系列的“第三”篇章&#xff0c;在之前的“篇章&#xff08;二&#xff09;”中已经分析了EBSE步骤一&#xff1a;关于优势和挑战的案例研究。在本篇章&#xff08;三&#xff09;中&#xff0c;我们将结合具体研究实践&#xff0…

TikTok小店运营必看攻略!

众所周知&#xff0c;国内的抖音早已风生水起&#xff0c;抖音给了很多普通人一夜暴富的机会。而Tiktok也跟随着抖音开启了商业模式&#xff0c;目前流量与机会都是不可小觑的。在店铺申请通过&#xff0c;成功入驻之后&#xff0c;又该如何运营&#xff1f;这篇文章为大家解答…

小程序自定义海报

如图微信小程序生成海报自定义调整位置 //微信小程序组件 poster.wxml<view styleposition: relative;{{customStyle}};{{painterStyle}}><block wx:if"{{!use2D}}"><canvas canvas-id"photo" style"{{photoStyle}};position: absolut…

揭开液体活检技术的神秘面纱

液体活检&#xff08;liquid biopsy&#xff09;是新兴的肿瘤诊断技术&#xff0c;与传统检测手段相比具有创伤性小、取样便捷、可实时动态检测等优势&#xff0c;在肿瘤早期筛查、分子分型、复发监测和预后评估等方面起到重要作用。 图 1 与传统的组织活检相比&#xff0c;液…

路径规划算法:基于爬行动物优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于爬行动物优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于爬行动物优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

【分布式应用】Filebeat+ELK 部署、logstash filter四大过滤插件

目录 一、 FilebeatELK 部署1.1在 Filebeat 节点上操作1.1.1安装 Filebeat1.1.2设置 filebeat 的主配置文件1.1.3 在 Logstash 组件所在节点上新建一个 Logstash 配置文件1.1.4浏览器访问测试 二 、filter四大插件2.1grok 正则捕获插件2.1.1内置正则表达式调用 2.2logstash 官方…

操作系统——输入输出IO管理

文章目录 **1 I/O管理概述****1.1 I/O设备****1.2 I/O控制方式****1.2.1 程序直接控制方式****1.2.2 中断驱动方式****1.2.3 DMA方式****1.2.4 通道控制方式** **1.3 I/O软件层次结构****1.4 应用程序I/O接口** **2 设备独立性软件****2.1 高速缓冲与缓冲区****2.2 设备分配和回…

车牌识别--http协议

文章目录 libcurl车牌识别 前言 基于https协议访问网址实现车牌识别 http是超文本传输协议&#xff0c;它可以在B/S模式下解决tcp传输格式的问题&#xff0c;处于tcp之上在应用层 https是http加密版本&#xff0c;通过httpssl实现加密版http 我们车牌识别通过http协议调用翔云…

Django_admin数据管理后台

目录 一、基础操作 二、自定义后台操作数据行为 源码等资料获取方法 admin数据管理后台是django内置的一个后台管理界面&#xff0c;能查看已注册模型类的数据结构&#xff0c;以及对数据的增删改。 一、基础操作 1.1 检查项目目录下的urls.py有没有如下配置 1.2 创建djan…

使用U盘在无系统的机器上安装Ubuntu

1、在Bios中选择将USB 作为Boot Option #1 2、插入制作好的系统盘&#xff08;系统盘制作可以看上一篇博客&#xff09; 3、save & exit选择 save change and reset 4、 开始安装系统 如果出现安装窗口过大无法点击下一步&#xff0c;可以使用ALTF7拖动窗口。

java中的BIO NIO AIO

多路复用IO模型是目前使用的比较多的模型。java中的NIO常用的理解是在 网络IO中&#xff0c;那么在网络IO中为什么NIO比BIO效率更高&#xff1f;我们的web项目中是用的哪种呢&#xff1f;可以往下看。 JavaNIO实际上就是多路复用IO。在多路复用IO模型中&#xff0c;会有一个线程…