SKlearn 实战保险花销预测

mac2024-05-19  29

整理于2020年11月下旬,献给不甘平凡的你

更多机器学习知识请查收于: https://blog.csdn.net/weixin_45316122/article/details/109854595

Trick:纯demo,心在哪里,结果就在那里

 

读取数据 import pandas as pd import numpy as np data = pd.read_csv('./data/insurance.csv', sep=',') data.head(n=6) No output EDA 数据探索 import matplotlib.pyplot as plt % matplotlib inline No output plt.hist(data['charges']) No output plt.hist(np.log(data['charges']), bins=20) No output 特征工程 data = pd.get_dummies(data) data.head() No output 1 x = data.drop('charges', axis=1) x.head() --------------------------------------------------------------------------- NameError Traceback (most recent call last) <ipython-input-1-97256ed4f09f> in <module> ----> 1 x = data.drop('charges', axis=1) 2 x.head() NameError: name 'data' is not defined y = data['charges'] No output x.fillna(0, inplace=True) y.fillna(0, inplace=True) No output from sklearn.model_selection import train_test_split x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3) No output from sklearn.preprocessing import StandardScaler scaler = StandardScaler(with_mean=True, with_std=True).fit(x_train) No output x_train_scaled = scaler.transform(x_train) x_test_scaled = scaler.transform(x_test) x_train_scaled No output from sklearn.preprocessing import PolynomialFeatures poly_features = PolynomialFeatures(degree=2, include_bias=False) x_train_scaled = poly_features.fit_transform(x_train_scaled) x_test_scaled = poly_features.fit_transform(x_test_scaled) No output 模型训练 from sklearn.linear_model import LinearRegression from sklearn.linear_model import Ridge from sklearn.ensemble import GradientBoostingRegressor reg = LinearRegression() reg.fit(x_train_scaled, np.log1p(y_train)) y_predict = reg.predict(x_test_scaled) No output ridge = Ridge(alpha=0.4) ridge.fit(x_train_scaled, np.log1p(y_train)) y_predict_ridge = ridge.predict(x_test_scaled) No output booster = GradientBoostingRegressor() booster.fit(x_train_scaled, np.log1p(y_train)) y_predict_boost = ridge.predict(x_test_scaled) No output 模型评估 from sklearn.metrics import mean_squared_error log_rmse_train = np.sqrt(mean_squared_error(y_true=np.log1p(y_train), y_pred=reg.predict(x_train_scaled))) log_rmse_test = np.sqrt(mean_squared_error(y_true=np.log1p(y_test), y_pred=y_predict)) rmse_train = np.sqrt(mean_squared_error(y_true=y_train, y_pred=np.exp(reg.predict(x_train_scaled)))) rmse_test = np.sqrt(mean_squared_error(y_true=y_test, y_pred=np.exp(reg.predict(x_test_scaled)))) log_rmse_train, log_rmse_test, rmse_train, rmse_test No output log_rmse_train = np.sqrt(mean_squared_error(y_true=np.log1p(y_train), y_pred=ridge.predict(x_train_scaled))) log_rmse_test = np.sqrt(mean_squared_error(y_true=np.log1p(y_test), y_pred=y_predict_ridge)) rmse_train = np.sqrt(mean_squared_error(y_true=y_train, y_pred=np.exp(ridge.predict(x_train_scaled)))) rmse_test = np.sqrt(mean_squared_error(y_true=y_test, y_pred=np.exp(ridge.predict(x_test_scaled)))) log_rmse_train, log_rmse_test, rmse_train, rmse_test No output log_rmse_train = np.sqrt(mean_squared_error(y_true=np.log1p(y_train), y_pred=booster.predict(x_train_scaled))) log_rmse_test = np.sqrt(mean_squared_error(y_true=np.log1p(y_test), y_pred=y_predict_boost)) rmse_train = np.sqrt(mean_squared_error(y_true=y_train, y_pred=np.exp(booster.predict(x_train_scaled)))) rmse_test = np.sqrt(mean_squared_error(y_true=y_test, y_pred=np.exp(booster.predict(x_test_scaled)))) log_rmse_train, log_rmse_test, rmse_train, rmse_test No output

 

最新回复(0)