机器学习——多元线性回归

线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多分成为回归系数的模型参数的现行组合。只有一个自变量的情况称为简单回归,大于一个自变量情况的叫做多元回归。

回归结果度量(针对回归问题的评价测度):

  1. 平均绝对误差(Mean Absolute Error,NAE),对应方法:metrics.mean_absolute_error(true,pred)
  2. 均方误差(Mean Squared Error,MSE),对应方法:metrics.mean_squared_error(true,pred)
  3. 均方根误差(Root Mean Squared Error,RMSE),对应方法:np.sqrt(metrics.maen_squared_error(true,pred))

 

Pandas主要有两个数据结构:Series和DataFrame:

.Series类似与一维数组,它有一组数据以及一组与之相关的数据标签(即索引)组成。

.DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型。DataFrame既有行索引也有列索引,它可以被看做有Series组成的字典。
分位数,也称分为点,是指将一个随机变量的概率扽不范围分为积分等份的数值点,分析其数据变量的趋势。

(1)数据理解

seaborn也是一个可视化库,它的pairplot函数绘制的X的每一维度和对应的Y的三点图。通过设置size和aspect参数来调节显示的大小和比例。可以从图中看出,TV特征和销量是有比较强的线性关系的,而其他两个与销量的关系比较弱。通过加入一个参数kind=reg,seaborn可以添加一条最佳拟合直线和95%的置信带。

(2)构造测试集和训练集:

  1. from sklearn.model_selection  import train_test_split  
  2. X_train, X_test, y_train, y_test = train_test_split(Data, sales, random_state=1)  
  3. # default split is 75% for training and 25% for testing  
  4. print(X_train.shape)  
  5. print(y_train.shape)  
  6. print(X_test.shape)  
  7. print(y_test.shape)

(3)构建线性回归模型

  1. #Scikit-learn的线性回归  
  2. #导入model  
  3. from sklearn.linear_model import LinearRegression  
  4. #实例化线性回归  
  5. linreg = LinearRegression()  
  6. #将模型拟合到训练数据  
  7. linreg.fit(X_train, y_train)  
  8. #打印模型的系数  
  9. print(linreg.intercept_)  
  10. print(linreg.coef_)  

说明:线性模型表达式: y=β0+β1x1+β2x2+...+βnxn 其中y是响应,β0是截距,β1是x1的系数,以此类推

在这个案例中: y=β0+β1∗TV+β2∗radio+...+βn∗newspaper,β0的值为2.87696662232,β1的值为0.04656457,β2的值为0.17915812,β3的值为0.00345046

如何解释各个特征对应的系数的意义?对于给定了Radio和Newspaper的广告投入,如果在TV广告上每多投入1个单位,对应销量将增加0.0466个单位

  • 对于给定了Radio和Newspaper的广告投入,如果在TV广告上每多投入1个单位,对应销量将增加0.0466个单位
  • 更明确一点,加入其它两个媒体投入固定,在TV广告上每增加1000美元(因为单位是1000美元),销量将增加46.6(因为单位是1000)

4模型预测

  1. #预测  
  2. y_pred = linreg.predict(X_test)  
  3. y_pred   

(5)模型评价

求均方根误差

(6)通过可视化观察相关性,通过移除某些特征后,看先行回归预测的结果的RMSE

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值