多元线性回归-python代码

引言

求解多个自变量和一个因变量之间的线性关系

y=a1x1+a2x2+a3x3+b (y为因变量,x为自变量,a为权重,b为截距。)

数据类型:
在这里插入图片描述

1.读数据

'''
y=a1x1+a2x2+a3x3+b (y为因变量,x为自变量,a为权重,b为截距。)

'''
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split   #切分训练集和验证集
import pandas as pd
import os
import seaborn as sns

#1.获得正确的数据
path = os.getcwd().replace('\\','/') + str('/1.回归问题/data/Advertising.csv')
data = pd.read_csv(path)

2.制作数据集

X = data[['TV','radio','newspaper']]
Y = data[['sales']]  #功能是一样的,将一维改成二维数组。
# 数据可视化
"""
1.分别绘制TV、radio、newspaper和sales二个元素之间的关系
"""
# sns.pairplot(data,x_vars = ['TV','radio','newspaper'],y_vars = 'sales',height = 4,aspect = 0.8,kind='reg')

3.sklearn模型

linear_regressor = LinearRegression()
x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.3,random_state=0)   #则表示7:3进行划分数据集
linear_regressor.fit(x_train,y_train)  #拟合函数

# 3.使用测试集进行验证
Y_pred = linear_regressor.predict(x_test)   #预测y   使用训练集train拟合得到拟合函数后,再使用测试集test得到预测值
print('a权重:',linear_regressor.coef_)
print('b截距:',linear_regressor.intercept_)

# 4.模型评估--这些任意可以选择,根据模型的还会却确定取舍
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
mes_test = mean_squared_error(y_test,Y_pred)

print("平均方误差(MSE):",mean_squared_error(y_test,Y_pred))
print("根均方误差(RMSE):",mean_absolute_error(y_test,Y_pred))
print("平均绝对值误差(MAE):",r2_score(y_test,Y_pred))

RR = linear_regressor.score(x_test,y_test)  # # 线性回归:R_square; 分类问题: acc
print("决定系数:",RR)  #模型越接近1,表示该模型越好

# 补充---验证该模型是否过拟合(通过训练集train进行验证)
Y_train_pred = linear_regressor.predict(x_train)   #预测y
mse_train = mean_squared_error(y_train,Y_train_pred)
# 当mes_train和mse_test误差很小,则证明该模型未发生过拟合现象。

4.完整代码

'''
y=a1x1+a2x2+a3x3+b (y为因变量,x为自变量,a为权重,b为截距。)

'''
from sklearn.linear_model import LinearRegression
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split   #切分训练集和验证集
import pandas as pd
import os
import seaborn as sns

#1.获得正确的数据
path = os.getcwd().replace('\\','/') + str('/1.回归问题/data/Advertising.csv')
data = pd.read_csv(path)

X = data[['TV','radio','newspaper']]
Y = data[['sales']]  #功能是一样的,将一维改成二维数组。
# 数据可视化
"""
1.分别绘制TV、radio、newspaper和sales二个元素之间的关系
"""
# sns.pairplot(data,x_vars = ['TV','radio','newspaper'],y_vars = 'sales',height = 4,aspect = 0.8,kind='reg')
#2.生成linalg regression模型---拟合函数
linear_regressor = LinearRegression()
x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.3,random_state=0)   #则表示7:3进行划分数据集
linear_regressor.fit(x_train,y_train)  #拟合函数

# 3.使用测试集进行验证
Y_pred = linear_regressor.predict(x_test)   #预测y   使用训练集train拟合得到拟合函数后,再使用测试集test得到预测值
print('a权重:',linear_regressor.coef_)
print('b截距:',linear_regressor.intercept_)

# 4.模型评估--这些任意可以选择,根据模型的还会却确定取舍
from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
mes_test = mean_squared_error(y_test,Y_pred)

print("平均方误差(MSE):",mean_squared_error(y_test,Y_pred))
print("根均方误差(RMSE):",mean_absolute_error(y_test,Y_pred))
print("平均绝对值误差(MAE):",r2_score(y_test,Y_pred))

RR = linear_regressor.score(x_test,y_test)  # # 线性回归:R_square; 分类问题: acc
print("决定系数:",RR)  #模型越接近1,表示该模型越好

# 补充---验证该模型是否过拟合(通过训练集train进行验证)
Y_train_pred = linear_regressor.predict(x_train)   #预测y
mse_train = mean_squared_error(y_train,Y_train_pred)
# 当mes_train和mse_test误差很小,则证明该模型未发生过拟合现象。
### 多元线性回归方程 Python 实现代码示例 为了实现多元线性回归,在Python中通常会使用`scikit-learn`库中的`LinearRegression`类。下面是一个完整的例子,该例子展示了如何加载数据集、预处理数据以及构建并评估一个多元线性回归模型。 #### 导入必要的库 首先导入所需的库: ```python import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score ``` #### 准备数据 假设有一个包含多个自变量的数据集,并且这些数据已经被存储在一个CSV文件里。这里将读取这个文件并将其中的内容转换成适合输入给机器学习算法的形式[^2]。 ```python data = np.loadtxt('data.csv', delimiter=',', skiprows=1) X = data[:, :-1] # 特征矩阵 y = data[:, -1] # 目标向量 ``` #### 数据分割 接着把整个数据集分为训练集和测试集两部分以便后续验证模型性能。 ```python X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` #### 创建与拟合模型 现在可以实例化一个`LinearRegression`对象并对训练样本执行fit()操作完成参数估计过程。 ```python model = LinearRegression() model.fit(X_train, y_train) ``` #### 预测新值 一旦完成了上述步骤就可以调用predict()函数针对未知情况下的响应变量做出预测。 ```python predictions = model.predict(X_test) ``` #### 性能度量 最后计算均方误差(MSE) 和决定系数(R²),以此衡量所建模的好坏程度。 ```python mse = mean_squared_error(y_test, predictions) r2 = r2_score(y_test, predictions) print(f'Mean Squared Error: {mse}') print(f'R-squared Score: {r2}') ``` 此段脚本提供了一个基本框架用来解决涉及多维空间内的线性关系问题;当然还可以进一步调整超参优化效果或是尝试其他类型的回归技术来提高准确性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值