使用线性回归预测医疗费用

1. 数据集简介

我们使用两个数据集:

  • 训练集(Train):用于训练线性回归模型。
  • 测试集(Test):用于评估模型在新数据上的表现。

关键变量包括:

  • age: 患者年龄。
  • bmi: 身体质量指数。
  • smoker: 吸烟状态(已编码为数值)。
  • charges: 医疗费用(目标变量)。
  • type: 一个通过 SVM 分类器预测的类别特征。

2. 模型训练

2.1 特征工程:
  1. 多项式特征:增加了 age2(即 age 的平方)这一特征,用于捕捉年龄与医疗费用之间的非线性关系。
  2. 分组建模:根据 type 划分数据集,每个子集分别训练一个线性回归模型,以捕捉不同群体的医疗费用规律。
2.2 模型训练流程:
  • 遍历训练集中所有的 type 值(排除无效值如 -1)。
  • 每个 type 对应一个 LinearRegression 模型,使用特征 age、age2 和 bmi 预测目标变量 charges。
train["age2"] = train["age"] ** 2
models = {}
for t in train["type"].unique():
    if t == -1:
        continue
    train_subset = train[train["type"] == t]
    models[t] = LinearRegression()
    models[t].fit(train_subset[["age", "age2", "bmi"]], train_subset["charges"])

补充:LinearRegression() 是 scikit-learn 库中的一个函数,用于创建线性回归模型的实例,它通过最小化均方误差来拟合一个线性模型,预测一个因变量(响应变量)与一个或多个自变量(解释变量)之间的线性关系,并且可以估计模型系数,评估模型性能,广泛应用于金融、经济和社会科学等领域,但对异常值敏感,且假设变量间存在线性关系。

from sklearn.linear_model import LinearRegression

# 创建线性回归模型实例
model = LinearRegression()

# 拟合模型(假设 X 是特征数据,y 是目标变量)
model.fit(X, y)

# 进行预测(假设 X_new 是新的特征数据)
y_pred = model.predict(X_new)

# 获取模型系数
coefficients = model.coef_

# 获取模型截距
intercept = model.intercept_

3. 测试集上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值