ML Day3多元线性回归

机器学习100天,每天进步一点点。跟着GitHub开始学习!

英文项目地址https://github.com/Avik-Jain/100-Days-Of-ML-Code

中文项目地址https://github.com/MLEveryday/100-Days-Of-ML-Code


多元线性回归用一个线性方程来适配观测数据,这个线性方程是在两个以上(包括两个)的特征和响应之间构建的一个关系。

虚(拟)变量:在多元回归模型中,当遇到数据集是非数值数据类型时,使用分类数据是有效的方法。分类数据,是指反映(事物)类别的数据,是离散数据,其数值个数(分类属性)有限(但可能很多)且值之间无序。比如按性别分为男、女两类。在一个回归模型中,这些分类值用虚变量表示,取1或0这样的值,来表示肯定或否定类型。

虚拟变量陷阱:指两个以上(包含两个)变量之间高度相关的情形,即存在一个能够被其他变量预测出的变量。解决虚拟变量陷阱的方法是,类别变量减去一。

y=b0 + b1x1 +b2x2 +b3D1

多元线性回归处理的步骤为:

1 数据预处理

导入相关库、导入数据集、检查缺失数据、数据分类、编辑虚拟变量并注意避免虚拟变量陷阱、特征缩放

2 在训练集上训练模型

与简单线性回归处理相同。使用sklearn.linear_model库的LinearRegression类,调用fit方法对数据集进行训练。

3 预测结果

用predict方法在测试集上进行测试,并观察结果。

4 评估结果

使用sklearn中r2_score评估结果。模型越好,r2趋于1。

代码:

# 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  #iloc是取矩阵的某行某列
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])  #第3列进行独热编码
X = onehotencoder.fit_transform(X).toarray()  #不加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  #r2决定系数(拟合优度),模型越好:r2趋于1
print(r2_score(Y_test,y_pred))

结果:0.9347068473282446

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值