数据文件 Insurance csv包含1338条观测,即目前已经登记过的保险计划受益者以及表示病人特点和历年计划入的总的医疗费用的特征。这些特征是

数据文件 Insurance csv包含1338条观测,即目前已经登记过的保险计划受益者以及表示病人特点和历年计划入的总的医疗费用的特征。这些特征是

Age.表示主要受益者的年龄
Sex:性别sex=1,表示男性;sex=0表示女性
Bmi:身体质量指数,BMI指数等于体重(公斤)除以身高(米)的平方。理想的BM指数在18.5-24.9
Children:整数,表示保险计划中所包括的孩子受抚养者的数量
Smoker:是否吸烟, smoker=1表示吸烟, smoker=0表示不吸烟
Region:四个居任地,1,2,3,4
Charges:已结算的医疗费用如何将这些变量与已结算的医疗费用联系在一起是非常重较的。
结合本学期所学的回归预测方法,建立这些变量与 Charges的关系,并说明为什么选择该模型,并从预测误差角度说明该型的好坏。

data <- read.csv("insurance.csv")

选择的回归方法:线性回归,决策树回归,随机森林回归,SVM 回归,然后通过比较RMSE来判断 模型 的好坏

划分训练集和测试集

index <- sample(nrow(data
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先,我们需要导所需的库和数据集。假设我们已经安装了以下库:numpy、pandas、sklearn、matplotlib、seaborn。 ```python import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error import matplotlib.pyplot as plt import seaborn as sns # 导外部数据集 data = pd.read_csv('insurance.csv') ``` 接下来,我们需要对数据集进行一些预处理。首先,我们需要将分类变量转换为数值变量。我们可以使用pandas的get_dummies()函数实现这一点。 ```python # 将分类变量转换为数值变量 data = pd.get_dummies(data, columns=['sex', 'smoker', 'region']) ``` 接下来,我们需要将数据集拆分为训练集和测试集,并对模型进行训练和评估。 ```python # 拆分数据集为训练集和测试集 X = data.drop(['charges'], axis=1) y = data['charges'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 建立线性回归模型并训练 lr = LinearRegression() lr.fit(X_train, y_train) # 在测试集上进行预测并计算MSE y_pred = lr.predict(X_test) mse = mean_squared_error(y_test, y_pred) print('MSE:', mse) ``` 最后,我们可以通过可视化的方式展示预测结果。 ```python # 可视化预测结果 sns.regplot(x=y_test, y=y_pred) plt.title('Linear Regression') plt.xlabel('Actual Charges') plt.ylabel('Predicted Charges') plt.show() ``` 完整代码如下: ```python import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error import matplotlib.pyplot as plt import seaborn as sns # 导外部数据集 data = pd.read_csv('insurance.csv') # 将分类变量转换为数值变量 data = pd.get_dummies(data, columns=['sex', 'smoker', 'region']) # 拆分数据集为训练集和测试集 X = data.drop(['charges'], axis=1) y = data['charges'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 建立线性回归模型并训练 lr = LinearRegression() lr.fit(X_train, y_train) # 在测试集上进行预测并计算MSE y_pred = lr.predict(X_test) mse = mean_squared_error(y_test, y_pred) print('MSE:', mse) # 可视化预测结果 sns.regplot(x=y_test, y=y_pred) plt.title('Linear Regression') plt.xlabel('Actual Charges') plt.ylabel('Predicted Charges') plt.show() ``` 注意:在运行代码之前,请确保将insurance.csv文件保存在正确的路径下,并且文件名正确。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mrrunsen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值