关于kaggle中的一项数据采用逻辑回归模型进行患者医疗花费的预测。
数据在http://www.kaggle.com中,搜索Medical Cost Personal Datasets即可
数据说明
age:主要受益人的年龄
sex:保险承包商性别,女性,男性
bmi:体重指数,提供对身体的理解,相对于身高相对较高或较低的重量,使用身高与体重之比的体重客观指数(kg /平方公尺),理想情况下为18.5至24.9
children:健康保险覆盖的儿童人数/家属人数
smoker:吸烟
region:受益人的住宅区位于美国,东北,东南,西南,西北。
charges:由健康保险计费的个人医疗费用
数据分析及代码
1、查看数据
import pandas as pd
import os
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
import bokeh
import numpy as np
warnings.filterwarnings('ignore')
data = pd.read_csv(r'D:\data\insuance.csv')
导入所需要的第三库和读取数据
data.head()
线性回归:
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics import r2_score,mean_squared_error
from sklearn.ensemble import RandomForestRegressor
x = data.drop(['charges','sex','region'], axis = 1)
y = data.charges
x_train,x_test,y_train,y_test = train_test_split(x,y, random_state = 0)
lr = LinearRegression().fit(x_train,y_train)
y_train_pred = lr.predict(x_train)
y_test_pred = lr.predict(x_test)
print(lr.score(x_test,y_test))
具体可以参考:
https://blog.csdn.net/zhao99888/article/details/121309324
from sklearn.preprocessing import LabelEncoder
zz=LabelEncoder()
zz.fit(data.sex.drop_duplicates())
data.sex=zz.transform(data.sex)
zz.fit(data.smoker.drop_duplicates())
data.smoker=zz.transform(data.smoker)
zz.fit(data.region.drop_duplicates())
data.region=zz.transform(data.region)
data.corr()['charges'].sort_values()