当前位置:   article > 正文

机器学习4-多元线性回归

机器学习4-多元线性回归

多元线性回归(Multiple Linear Regression)是线性回归的一种扩展形式,用于建立因变量与多个自变量之间的关系。在简单线性回归中,我们考虑一个因变量和一个自变量之间的线性关系,而多元线性回归允许我们考虑多个自变量对因变量的影响。

一般的多元线性回归模型的数学表达式如下:

Y=\beta_{0}+\beta_{1}X_{1}+\beta_{2}X_{2}+...++\beta_{n}X_{n}+\varepsilon

其中:

  • Y 是因变量(要预测的目标)。
  • X1​,X2​,…,Xn​ 是自变量(特征)。
  • β0​ 是截距(模型在X1​,X2​,…,Xn​ 都为0时的预测值)。
  • β1​,β2​,…,βn​ 是各自变量的回归系数,表示自变量对因变量的影响。
  • ε 是误差项,表示模型无法捕捉到的影响因素和随机误差。

多元线性回归的目标是找到合适的回归系数 β0​,β1​,…,βn​ 来最小化实际观测值 Y 与模型预测值之间的误差,通常使用最小二乘法进行优化。

模型训练后,可以使用这个模型进行预测。当有新的自变量值 X1​,X2​,…,Xn​ 时,通过带入这些值,就可以预测相应的因变量值 Y

多元线性回归在实际应用中非常常见,例如在经济学中预测商品销售额,医学中预测疾病发生率,工程学中预测产品性能等。

需求:

根据现有数据预测公司的利润

数据示例:

R&D SpendAdministrationMarketing SpendStateProfit
165349.2136897.8471784.1New York192261.83
162597.7151377.59443898.53California191792.06

程序:

  1. ## Step 1: Data Preprocessing
  2. ### Importing the libraries
  3. import pandas as pd
  4. import matplotlib.pyplot as plt
  5. import numpy as np
  6. ### Importing the dataset
  7. dataset = pd.read_csv('50_Startups.csv')
  8. X = dataset.iloc[:, :-1].values
  9. Y = dataset.iloc[:, 4].values
  10. ### Encoding Categorical data
  11. from sklearn.preprocessing import LabelEncoder, OneHotEncoder
  12. from sklearn.compose import ColumnTransformer
  13. labelencoder = LabelEncoder()
  14. X[:, 3] = labelencoder.fit_transform(X[:, 3])
  15. # Use ColumnTransformer for one-hot encoding
  16. ct = ColumnTransformer(
  17. transformers=[
  18. ('onehot', OneHotEncoder(), [3]) # Apply one-hot encoding to column 3
  19. ],
  20. remainder='passthrough' # Keep the rest of the columns unchanged
  21. )
  22. X = np.array(ct.fit_transform(X), dtype=np.float64)
  23. ### Avoiding Dummy Variable Trap
  24. X = X[:, 1:]
  25. ### Splitting the dataset into the Training set and Test set
  26. from sklearn.model_selection import train_test_split
  27. X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=0)
  28. ## Step 2: Fitting Multiple Linear Regression to the Training set
  29. from sklearn.linear_model import LinearRegression
  30. regressor = LinearRegression()
  31. regressor.fit(X_train, Y_train)
  32. ## Step 3: Predicting the Test set results
  33. Y_pred = regressor.predict(X_test)
  34. print(Y_pred)
  35. # Step 4: Visualizing the results
  36. plt.scatter(Y_test, Y_pred, color='blue')
  37. plt.plot([min(Y_test), max(Y_test)], [min(Y_test), max(Y_test)], linestyle='--', color='red', linewidth=2, label='Regression Line')
  38. plt.title('Actual vs Predicted Profit')
  39. plt.xlabel('Actual Profit')
  40. plt.ylabel('Predicted Profit')
  41. plt.show()

结果:

结论:

10个结果数据的预测值与真实值相差不多,大体落在线性回归模型的范围内。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/59948
推荐阅读
相关标签
  

闽ICP备14008679号