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