线性回归-代码(线性回归-交叉验证)

这篇博客展示了如何运用线性回归算法预测产品销量,并通过代码实现数据处理和模型训练。文章中包含了线性回归模型的构建过程,以及使用交叉验证来评估模型的性能。内容以Python为编程语言,探讨了数据结构与算法在人工智能预测任务中的应用。

 该代码为利用线性回归预测销量 折线图

#!/usr/bin/python
# -*- coding:utf-8 -*-

import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Lasso, Ridge
from sklearn.model_selection import GridSearchCV


if __name__ == "__main__":
    # pandas读入
    data = pd.read_csv('Advertising.csv')    # TV、Radio、Newspaper、Sales
    x = data[['TV', 'Radio', 'Newspaper']]
    y = data['Sales']

    x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1,train_size=0.8) # random_state表示给定一个随机种子,数字任意; train_size=0.8表示训练数据80%,默认75%,若train_size=100表示训练数据100个    
    # model = Lasso() #Lasso回归使用L1正则
    model = Ridge()#Ridge回归使用L2正则  其实需要参数alpha,表示正则项里的 lamda
    alpha_can = np.logspace(-3, 2, 10)#从10的-3次方 到10的二次方 等比数列
    np.set_printoptions(suppress=True)#numpy的输出以小数点形式输出0.001 不要类似1.000000e-0
### 多元线性回归分析在MATLAB中的实现 #### 1. 数据准备 在进行多元线性回归之前,需要准备好数据。假设你有多个自变量 $ x_1, x_2, \dots, x_n $ 和一个因变量 $ y $。将这些数据组织成矩阵形式,其中每一列代表一个自变量,每一行代表一个观测值。 ```matlab % 示例数据 X = [ones(size(x1)), x1, x2, x3]; % 添加常数项(截距) y = y_data; % 因变量 ``` #### 2. 模型构建 使用 `regress` 函数来进行多元线性回归分析。该函数返回回归系数及其置信区间,并提供模型的统计检验结果。 ```matlab [b, bint, r, rint, stats] = regress(y, X); ``` - `b` 是回归系数向量。 - `bint` 是回归系数的置信区间。 - `r` 是残差向量。 - `rint` 是残差的置信区间。 - `stats` 包含 R²、F 统计量和 p 值等统计信息。 #### 3. 模型诊断 检查模型的多重共线性问题是非常重要的。可以通过计算方差膨胀因子(VIF)来评估变量间的相关性。 ```matlab vif = diag(inv(X'*X) * (X'*X)); ``` 如果某些变量的 VIF 值大于 10,则可能存在严重的多重共线性问题,建议移除或合并这些变量[^1]。 #### 4. 模型验证预测 通过绘制残差图来验证模型的拟合效果。此外,可以使用交叉验证来评估模型的预测性能。 ```matlab % 残差图 plot(r, 'o'); title('Residuals Plot'); xlabel('Observation Index'); ylabel('Residual Value'); % 预测新数据 y_pred = X * b; ``` #### 5. 结果解释 根据回归系数 `b`,可以解释每个自变量对因变量的影响。例如,在引用[2]中提到的模型: $$ \text{总能耗} = 33374 + (-53041) \times \text{体型系数} + 32 \times \text{面积} - 101 \times \text{人口密度} + 431 \times \text{内扰电耗} $$ 这个公式表明了各个自变量对总能耗的具体影响程度。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值