大师兄的数据分析学习笔记(三十二):模型评估(一)
大师兄的数据分析学习笔记(三十四):模型评估(三)
二、回归模型评估
- 回归模型拟合的值是连续值,所以回归模型的预测值也是连续值。
- 回归模型评估的任务,就是评估这两个值之间的差距有多大。
- 常用方法如下:
- MAE(Mean Absolute Error):
取每个预测值和真实值相减后,绝对值的和的平均值。- MSE(Mean Square Error):
由于MAE取导比较麻烦,所以MSE实际是比较常用的指标,是取残差的平方和的均值。- RMSE(Root MSE):
如果MSE接近于0,取RMSE会增加其尺度- R2_score(决定系数):
分母是真实值的离散程度,分子是预测值相较于真实值的离散程度,所以其结果是一个综合指标。
>>>import os
>>>import pandas as pd
>>>from sklearn.preprocessing import MinMaxScaler
>>>from sklearn.linear_model import LinearRegression
>>>from sklearn.metrics import mean_squared_error,mean_absolute_error,r2_score
>>>def regression_test(features:pd.DataFrame,label:pd.DataFrame):
>>> # print(f"X:{features}")
>>> # print(f"Y:{label}")
>>> r = LinearRegression()
>>> r.fit(features.values,label.values)
>>> Y_pred = r.predict(features.values)
>>> print(f"Coef:{r.coef_}")
>>> print(f"MSE:{mean_squared_error(label.values,Y_pred)}")
>>> print(f"MAE:{mean_absolute_error(label.values,Y_pred)}")
>>> print(f"R2:{r2_score(label.values,Y_pred)}")
>>>if __name__ == '__main__':
>>> # 处理数据
>>> df = pd.read_csv(os.path.join(".", "data", "WA_Fn-UseC_-HR-Employee-Attrition.csv"))
>>> label = df.Age
>>> features = pd.DataFrame(MinMaxScaler().fit_transform(df.HourlyRate.values.reshape(-1,1)).reshape(1,-1)[0])
>>> # 回归
>>> regression_test(features, label)
Coef:[0.76394992]
MSE:83.34908532565534
MAE:7.408669721645791
R2:0.0005898361490798143