机器学习之多元线性回归

在这里插入图片描述
在这里插入图片描述

一、多元线性回归

  多元线性回归在数学表达式上和一元线性回归相差相差不大,只是因为输入的特征变多,导致了从一元变成了多元。也可以使用它找到对于预测结果来说那个特征的影响较大,不同的变量之间是如何相互关联的。

1.前提

  如果要完成一个成功的回归分析,需要得到下面的假定。
  1)自变量和因变量要满足线性关系
  2)误差项的方差要等同
  3)多元正态分布:多元回归要假定残差符合正态分布
  4)数据很少或者没有多重共线性,也就是输入的特征要尽量保持相互独立。

2.注意

  在实际问题中,输入的特征会比较多,但是输入的特征和输出的目标值之间不见得有较大的联系,就像是我体重200斤,和我学习成绩之间,不见得有较大的联系,所以当输入的变量过多时,或者输入的变量和其他变量有很大的相关性,则需要选择合适的特征:
  1)向前选择法
  2)向后选择法
  3)向前向后法

3.虚拟变量

  输入的特征中有一部分是类别特征,如果只是转化成类别数,其类别数是有限的而且还是离散的,并且无序,所以只使用0,1来表示是肯定类型还是否定类型。

4.虚拟变量陷阱

  虚拟变量陷阱就是说,如果类别属性是3个,那个代表就是,100,010,001,如果把第一列去掉,也可以进行区分。

二、代码

  import pandas as pd
  import numpy as np
  from sklearn.preprocessing import LabelEncoder,OneHotEncoder
  from sklearn.model_selection import train_test_split
  from sklearn.linear_model import LinearRegression
  from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error

1.导入数据

  data = pd.read_csv(‘50_Startups.csv’,encoding=‘utf-8’)
  X = data.iloc[ : , : -1].values
  Y = data.iloc[ : , -1].values

2.检查缺失数据 无缺失值
3.分类数据进行变化,先label然后onehot

  labelencoder = LabelEncoder()
  X[: , 3] = labelencoder.fit_transform(X[ : , 3])
  onehotencoder = OneHotEncoder(categorical_features = [3])

categorical_features = ‘all’ 默认值为all,也就是对所有的的特征进行onghot,但是也可以指定【3】,就是第四个特征。

  X = onehotencoder.fit_transform(X).toarray()

躲避虚拟变量陷阱

  X = X[ : , 1 : ]

4 拆分训练集和测试集

  x_train,x_test,y_train,y_test = train_test_split(X,Y,test_size=0.2,random_state=0)

训练模型

  liner = LinearRegression()
  liner.fit(x_train,y_train)

测试模型

  y_pred = liner.predict(x_test)

评估模型

  print(‘The value of default measurement of LInearRegression’,liner.score(x_test,y_test))
  print(‘The value of R-squared of LinearRegression is’,r2_score(y_test,y_pred))

PS:特征工程中的特征选择问题,以及特征之间相关性的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值