多元线性回归案例(改)

数据集的概况:
1. 性别:保险承包商性别,女性,男性
2. bmi:身体质量指数,提供对身体的理解,相对于身高相对较高或较低的重量,使用身高与体重之比的体重客观指数(kg /平方公尺),理想情况下为18.5至24.9
3. 儿童:健康保险覆盖的儿童人数/家属人数
4. 吸烟者:吸烟
5. 地区:受益人在美国,东北,东南,西南,西北的住宅区。
6. 费用:由健康保险计费的个人医疗费用

#导入需要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import LabelEncoder
from sklearn.preprocessing import OneHotEncoder
from sklearn.model_selection import train_test_split
import statsmodels.formula.api as sm
#数据处理
dataset = pd.read_csv('insurance.csv')
# print(dataset.columns)
x = dataset.iloc[: , :-1].values
# print(x)
y = dataset.iloc[:,-1].values
labelencoder = LabelEncoder()
x[:,1] = labelencoder.fit_transform(x[:,1])
x[:,4] = labelencoder.fit_transform(x[:,4])
x[:,5] = labelencoder.fit_transform(x[:,5])     #使用虚拟编码对类别变量进行转化

onehotencoder = OneHotEncoder(categorical_features=[5])
x = onehotencoder.fit_transform(x).toarray()[:,1:]      #同上,处理三类以上的类别变量。

x = np.append(arr = np.ones((x.shape[0],1)) , values = x , axis = 1) #给常数项增加系数

x_train,x_test,y_train,y_test = train_test_split(x,y,test_size = 0.3,random_state = 0) #分割数据集为训练集和测试集
#利用反向淘汰方法,剔除显著性较低的变量对数据进行训练
x_opt = x_train[:,[0,1,2,3,4,5,6,7,8]]
regressor = sm.OLS(endog=y_train,exog=x_opt).fit()
regressor.summary()  #except x_5

x_opt = x_train[:,[0,1,2,3,4,6,7,8]]
regressor = sm.OLS(endog=y_train,exog=x_opt).fit()
regressor.summary()  #except x_1

x_opt = x_train[:,[0,2,3,4,6,7,8]]
regressor = sm.OLS(endog=y_train,exog=x_opt).fit()
regressor.summary()  #except x_1

x_opt = x_train[:,[0,2,4,6,7,8]]
regressor = sm.OLS(endog=y_train,exog=x_opt).fit()
regressor.summary()   #except x_3

x_opt = x_train[:,[0,4,6,7,8]]
regressor = sm.OLS(endog=y_train,exog=x_opt).fit()
regressor.summary()

最终的回归器参数信息:
这里写图片描述

感觉效果不是很好。。几个重要指标不是很好如:R-squared,Adj.R-squared

对测试集进行预测并评估模型:

x_test_opt = x_test[:,[0,4,6,7,8]]
y_pre = regressor.predict(x_test_opt)

from sklearn.metrics import r2_score
print('r2_score : ' + str(r2_score(y_test,y_pre)))

输出:

r2_score : 0.7894429387120752

猜你喜欢

转载自blog.csdn.net/weixin_43084928/article/details/82624186
今日推荐