赞
踩
多元线性回归(Multiple Linear Regression)是线性回归的一种扩展形式,用于建立因变量与多个自变量之间的关系。在简单线性回归中,我们考虑一个因变量和一个自变量之间的线性关系,而多元线性回归允许我们考虑多个自变量对因变量的影响。
一般的多元线性回归模型的数学表达式如下:
其中:
多元线性回归的目标是找到合适的回归系数 β0,β1,…,βn 来最小化实际观测值 Y 与模型预测值之间的误差,通常使用最小二乘法进行优化。
模型训练后,可以使用这个模型进行预测。当有新的自变量值 X1,X2,…,Xn 时,通过带入这些值,就可以预测相应的因变量值 Y。
多元线性回归在实际应用中非常常见,例如在经济学中预测商品销售额,医学中预测疾病发生率,工程学中预测产品性能等。
需求:
根据现有数据预测公司的利润
数据示例:
| R&D Spend | Administration | Marketing Spend | State | Profit |
|---|---|---|---|---|
| 165349.2 | 136897.8 | 471784.1 | New York | 192261.83 |
| 162597.7 | 151377.59 | 443898.53 | California | 191792.06 |
程序:
- ## Step 1: Data Preprocessing
-
- ### Importing the libraries
- import pandas as pd
- import matplotlib.pyplot as plt
- import numpy as np
-
- ### Importing the dataset
- dataset = pd.read_csv('50_Startups.csv')
- X = dataset.iloc[:, :-1].values
- Y = dataset.iloc[:, 4].values
-
- ### Encoding Categorical data
- from sklearn.preprocessing import LabelEncoder, OneHotEncoder
- from sklearn.compose import ColumnTransformer
-
- labelencoder = LabelEncoder()
- X[:, 3] = labelencoder.fit_transform(X[:, 3])
-
- # Use ColumnTransformer for one-hot encoding
- ct = ColumnTransformer(
- transformers=[
- ('onehot', OneHotEncoder(), [3]) # Apply one-hot encoding to column 3
- ],
- remainder='passthrough' # Keep the rest of the columns unchanged
- )
-
- X = np.array(ct.fit_transform(X), dtype=np.float64)
-
- ### 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)
-
- ## Step 2: Fitting Multiple Linear Regression to the Training set
- from sklearn.linear_model import LinearRegression
- regressor = LinearRegression()
- regressor.fit(X_train, Y_train)
-
-
- ## Step 3: Predicting the Test set results
- Y_pred = regressor.predict(X_test)
-
- print(Y_pred)
-
- # Step 4: Visualizing the results
- plt.scatter(Y_test, Y_pred, color='blue')
- plt.plot([min(Y_test), max(Y_test)], [min(Y_test), max(Y_test)], linestyle='--', color='red', linewidth=2, label='Regression Line')
-
- plt.title('Actual vs Predicted Profit')
- plt.xlabel('Actual Profit')
- plt.ylabel('Predicted Profit')
- plt.show()

结果:

结论:
10个结果数据的预测值与真实值相差不多,大体落在线性回归模型的范围内。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。