保险公司对我的投保时或根据历史数据生成的模型来计算我的保费,那么本次咱们就以这个模型的求解过程为例来实践下多元线性回归。python
数据集下载
数据信息以下图所示:git
咱们已经获取到保险公司部分数据,文件名为insurance.csv,文件内容以下。
咱们能够看出数据中共有六个维度:age(年龄),sex(性别),bmi(肥胖指数),children(孩子数量),smoker(是否吸烟),region(居住地)。charges则是当前数据人上年度在保险的额度。
因此咱们能够构建一个六维高维空间来求解这个模型。github
最后说明一下,本章中的数据来源主要是来自某保险公司内部的真实历史数据。app
完成本项目后,您将知道:spa
import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import PolynomialFeatures from sklearn.linear_model import LinearRegression # 1). 读取csv文件数据; filename = 'data/insurance.csv' data = pd.read_csv(filename) # 2). 清洗数据 reg = LinearRegression() x = data[['age', 'sex', 'bmi', 'children', 'smoker', 'region']] y = data['charges'] # 转换数据类型为整形 x = x.apply(pd.to_numeric, errors='corece') y = y.apply(pd.to_numeric, errors='coerce') # 填充空值 x.fillna(0, inplace=True) y.fillna(0, inplace=True) print(x) print(y) # 3). 开始建模 # degree: 多项式的阶数,通常默认是2; # interaction_only:若是值为true(默认是false),则会产生相互影响的特征集。 # include_bias:是否包含误差列 poly_features = PolynomialFeatures(degree=2, include_bias=False) # 降维 X_poly = poly_features.fit_transform(x) # 4). 用线性回归进行拟合 reg.fit(X_poly, y) print(reg.coef_) print(reg.intercept_) # 5). 预测 y_predict = reg.predict(X_poly) # 5). 真实的y值绘制:图形绘制显示 plt.plot(x['age'], y, 'b.') # 预测的y值绘制 plt.plot(X_poly[:, 0], y_predict, 'r.') plt.show()
预测值与真实值的图像显示:code