1. 数据集简介
我们使用两个数据集:
- 训练集(Train):用于训练线性回归模型。
- 测试集(Test):用于评估模型在新数据上的表现。
关键变量包括:
- age: 患者年龄。
- bmi: 身体质量指数。
- smoker: 吸烟状态(已编码为数值)。
- charges: 医疗费用(目标变量)。
- type: 一个通过 SVM 分类器预测的类别特征。
2. 模型训练
2.1 特征工程:
- 多项式特征:增加了 age2(即 age 的平方)这一特征,用于捕捉年龄与医疗费用之间的非线性关系。
- 分组建模:根据 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_