文章目录

  • 实验思维导图
  • 1. 收集、探索和准备数据
  • 1.1 收集数据
  • 1.2 探索和准备数据
  • 2. 基于数据训练模型
  • 2.1 使用线性回归函数
  • 2.2 建立模型
  • 3. 评估模型的性能
  • 4. 提高模型的性能
  • 4.1 将年龄非线性化
  • 4.2 数值转换二进制
  • 4.3 改进模型
  • 资料
  • Reference


实验思维导图

头歌机器学习线性回归实验报告 线性回归分析实验报告_线性回归

1. 收集、探索和准备数据

1.1 收集数据

insurance <- read.csv("~\\insurance.csv",stringsAsFactors=TRUE)
#将character类型数据转换为factors类型(略)

头歌机器学习线性回归实验报告 线性回归分析实验报告_r语言_02

1.2 探索和准备数据

str(insurance)
#查看变量及变量类型等

头歌机器学习线性回归实验报告 线性回归分析实验报告_数据_03

summary(insurance$charges)
#查看收入的分布:最小值/四分之一值/中位数/平均值/四分之三值/最大值

头歌机器学习线性回归实验报告 线性回归分析实验报告_数据_04

hist(insurance$charges)
#收入直方图,随着收入增多消费频率降低

头歌机器学习线性回归实验报告 线性回归分析实验报告_头歌机器学习线性回归实验报告_05

table(insurance$region)
#查看region的统计,东南方居住的患者稍多一些

头歌机器学习线性回归实验报告 线性回归分析实验报告_数据挖掘_06

cor(insurance[c("age","bmi","children","charges")])
#age、bmi、children、charges四个变量的相关系数矩阵
#对称结构,其中age与charges两个变量相关系数最大

头歌机器学习线性回归实验报告 线性回归分析实验报告_数据挖掘_07

pairs(insurance[c("age","bmi","children","charges")])
#age、bmi、children、charges四个变量的散点图矩阵
#对称结构,其中age与charge呈正相关关系

头歌机器学习线性回归实验报告 线性回归分析实验报告_数据_08

2. 基于数据训练模型

2.1 使用线性回归函数

ins_model <- lm(charges~age+children+bmi+sex+smoker+region,data = insurance)
#lm()探索charges与其他变量的相关性

头歌机器学习线性回归实验报告 线性回归分析实验报告_数据_09

2.2 建立模型

ins_model <- lm(charges~.,data = insurance)
#lm()探索charges与除charges所有变量的相关性

头歌机器学习线性回归实验报告 线性回归分析实验报告_线性回归_10

3. 评估模型的性能

summary(ins_model)

头歌机器学习线性回归实验报告 线性回归分析实验报告_数据挖掘_11

#参数注释:
#1.Residuals(残差)部分提供了预测误差的主要统计量,其中有一些统计量明显是相当大的。
#由于残差是真实值减去预测值,所以最大误差值29992.8 表明该模型至少对一个案例的费用少预测了将近三万元
#2.星号表示模型中每个特征的预测能力。3 颗星的出现表示显著性水平为 0,即该特征极不可能是与因变量无关的变量
#而一个通常的做法局势使用 0.05 的显著性水平来表示统计意义上的显著变量。
#3.多元 R 方值(判定系数)提供了一种度量模型性能的方式,即从整体上,模型能多大程度解释因变量的值。#它类似于相关系数,因为它的值越接近于 1.0,模型解释数据的性能就越好。

#1.Residuals(残差)这个案例中最大误差值为29992.8,预测值与实际值
#2.星号越多相关性越强
#3.R-squared(R²)越接近1模型性能越好

4. 提高模型的性能

4.1 将年龄非线性化

insurance$age2 <- insurance$age^2
#使年龄变为非线性数据

头歌机器学习线性回归实验报告 线性回归分析实验报告_线性回归_12

4.2 数值转换二进制

insurance$bmi30 <- ifelse(insurance$bmi >= 30,1,0)
#大于30岁的bmi替换为1,否则替换为0,即肥胖人士指标
#添加新属性

头歌机器学习线性回归实验报告 线性回归分析实验报告_r语言_13

4.3 改进模型

ins_model2 <- lm(charges~age+age2+children+bmi+sex+bmi30*smoker+region,data = insurance)
#使用新参数非线性的age2、肥胖与吸烟的相互作用bmi30*smoker
summary(ins_model2)

头歌机器学习线性回归实验报告 线性回归分析实验报告_头歌机器学习线性回归实验报告_14


头歌机器学习线性回归实验报告 线性回归分析实验报告_线性回归_15

#1.优化后的残差最小值及最大值都变小了;
#2.拥有表示模型中每个特征的预测能力的星号的变量也变多了;
#3.多元 R 方值由原来的 0.75 变为 0.86,更接近于 1,说明模型解释数据的性能变好了。

资料

实验资料

Reference

R语言之lm函数–cognize