機器學習(五)-保險保費的多元線性迴歸模型案例

1. 項目描述

保險公司對個人投保時或根據歷史數據生成的模型來計算個人保費,那麼本次我們就以這個模型的求解過程爲例來實踐下多元線性迴歸。

2 數據與簡單分析

數據信息如下圖所示:
在這裏插入圖片描述

我們已經獲取到保險公司部分數據,文件名爲insurance.csv,文件內容如下。
我們可以看出數據中共有六個維度:age(年齡),sex(性別),bmi(肥胖指數),children(孩子數量),smoker(是否吸菸),region(居住地)。charges則是當前數據人上年度在保險的額度。
所以我們可以構建一個六維高維空間來求解這個模型。

  • 相對於年齡來說, 年齡越大, 購買保險的金額應該越大;
  • 相對於性別來說,整體女性的壽命大於男性壽命大約10年, 因此男性的保險額度應該更大。
  • 相對於肥胖指數來說, 肥胖指數越小, 身體狀況越不好, 購買保險的金額應該越大;
  • 相對於孩子的數量來說, 孩子的數量越多, 壓力越大, 越勞累, 購買保險的金額應該越大;
  • 相對於是否吸菸來說, 吸菸的人壽命遠少於不吸菸的壽命, 因此 購買保險的金額應該越大;
  • 相對於地區來說, 地區環境越差, 有霧霾, 則越容易生病, 那麼購買保險的金額應該越大;

最後說明一下,本章中的數據來源主要是來自某保險公司內部的真實歷史數據。

3 項目實踐

完成本項目後,您將知道:

  • 如何從訓練數據中估計統計量。
  • 如何從數據估計線性迴歸係數。
  • 如何使用線性迴歸預測新數據。
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()

預測值與真實值的圖像顯示:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章