网站首页 > 技术教程 正文
多元线性回归是机器学习中常见的一种回归算法,用于建立一个目标变量与多个自变量之间的线性关系模型。其数学表示为 y = b0 + b1x1 + b2x2 + ... + bn*xn,其中 y 是目标变量,x1, x2, ..., xn 是自变量,b0, b1, b2, ..., bn 是回归系数。
多元线性回归的目标是找到最佳的回归系数 b0, b1, b2, ..., bn,使得预测值与实际观测值之间的误差最小化。同样,常用的方法是最小二乘法,通过最小化残差平方和来求解回归系数的值。
多元线性回归的步骤如下:
- 收集数据:收集包含目标变量和多个自变量的数据集。
- 数据预处理:对数据进行清洗、转换和集成等预处理操作。
- 拟合模型:使用最小二乘法拟合多元线性回归模型,得到回归系数 b0, b1, b2, ..., bn。
- 模型评估:评估模型的性能,常见的指标包括均方误差(MSE)、平均绝对误差(MAE)等。
- 预测:使用模型进行预测,给定新的自变量值 x1, x2, ..., xn,通过回归模型计算出对应的目标变量值 y。
多元线性回归适用于有多个自变量和一个目标变量之间的线性关系的情况。它可以更全面地考虑多个因素对目标变量的影响,但也需要注意自变量之间的相关性和共线性问题,以避免模型的不稳定性和过拟合现象。
例子:
首先,我们需要导入所需的库,如numpy用于数值计算和sklearn.linear_model用于建立线性回归模型。
import numpy as npfrom sklearn.linear_model
import LinearRegression
然后,我们定义一个多元的数据集,包含多个自变量 X 和一个目标变量 y。
X = np.array([[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]])
y = np.array([3, 5, 7, 9, 11])
接下来,我们可以创建一个LinearRegression对象,并使用fit方法拟合多元线性回归模型。
regressor = LinearRegression()
regressor.fit(X, y)
然后,我们可以使用模型预测新的观测值。
new_x = np.array([[6, 12], [7, 14]])
y_pred = regressor.predict(new_x)
最后,我们可以打印出预测结果。
print(y_pred)
完整的代码如下:
import numpy as np
from sklearn.linear_model import LinearRegression
X = np.array([[1, 2], [2, 4], [3, 6], [4, 8], [5, 10]])
y = np.array([3, 5, 7, 9, 11])
regressor = LinearRegression()
regressor.fit(X, y)
new_x = np.array([[6, 12], [7, 14]])
y_pred = regressor.predict(new_x)
print(y_pred)
运行以上代码,将得到预测结果,即新观测值对应的目标变量的估计值。
算法实现
第1步: 数据预处理
导入库
import pandas as pd
import numpy as np
导入数据集
dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : , 4 ].values
将类别数据数字化
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder = LabelEncoder()
X[: , 3] = labelencoder.fit_transform(X[ : , 3])
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()
躲避虚拟变量陷阱
X = X[: , 1:]
拆分数据集为训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)
第2步: 在训练集上训练多元线性回归模型
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
Step 3: 在测试集上预测结果
y_pred = regressor.predict(X_test)
数据集下载:https://github.com/chemalls/100-Days-Of-ML-Code/blob/master/datasets/50_Startups.csv
代码:
# Importing the libraries
import pandas as pd
import numpy as np
# Importing the dataset
dataset = pd.read_csv('../datasets/50_Startups.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : , 4 ].values
# Encoding Categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder = LabelEncoder()
X[: , 3] = labelencoder.fit_transform(X[ : , 3])
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()
# Avoiding Dummy Variable Trap
X = X[: , 1:]
# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)
# Fitting Multiple Linear Regression to the Training set
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
# Predicting the Test set results
y_pred = regressor.predict(X_test)
# regression evaluation
from sklearn.metrics import r2_score
print(r2_score(Y_test, y_pred))
猜你喜欢
- 2025-01-08 从头开始简单理解线性回归(附Python 实现)
- 2025-01-08 MATLAB中regress函数用法(多元线性回归)
- 2025-01-08 多元线性回归怎么做预测,excel预测产量计算教程
- 2025-01-08 基于RK3568国产处理器教学实验箱操作案例分享:一元线性回归实验
- 2025-01-08 【干货】如何最简单、通俗地理解线性回归算法?
- 2025-01-08 python机器学习:多元线性回归模型实战
- 2025-01-08 回归分析:线性回归、损失函数、多元线性回归及其评价指标
- 2025-01-08 R语言实战-02-多元线性回归诊断
- 2025-01-08 Matlab一秒搞定多元线性回归,包括方程,r值,因素主次
- 2025-01-08 回归系列(四)| 一个完整的线性回归是怎样做的?
你 发表评论:
欢迎- 01-09单因素方差分析+作图
- 01-09描述性统计分析 之 均值分析
- 01-0986:重复性和再现性分析GRR(2)-GRR均值极差分析法和方差分析法
- 01-09SPC如何做方差分析,意义又在哪里?
- 01-09MedSPSS小课堂——多因素方差分析
- 01-09MedSPSS小课堂——双因素方差分析
- 01-09SPSS单因素方差分析的操作步骤及结果解读,陈老师SPSS数据分析
- 01-0914单因素方差分析:One-Way ANOVA
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)