ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

[云炬python3玩转机器学习]5-5 衡量回归算法的标准,MSE vs MAE

2022-01-20 13:04:50  阅读:232  来源: 互联网

标签:plt predict vs train MAE test import MSE Out


 

 

 

05 衡量回归算法的标准,MSE vs MAE

In [3]:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
import datetime;print("Run by CYJ,",datetime.datetime.now())
Run by CYJ, 2022-01-20 12:53:42.123449

波士顿房产数据

In [4]:

boston = datasets.load_boston()

In [5]:

boston.keys()

Out[5]:

dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])

In [6]:

# print(boston.DESCR)

In [7]:

boston.feature_names

Out[7]:

array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',
       'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')

In [13]:

x = boston.data[:,5] # 只使用房间数量这个特征

In [14]:

x.shape

Out[14]:

(506,)

In [15]:

y = boston.target

In [16]:

y.shape

Out[16]:

(506,)

In [17]:

plt.scatter(x, y)
plt.show()

In [18]:

np.max(y)

Out[18]:

50.0

In [19]:

x = x[y < 50.0]
y = y[y < 50.0]

In [20]:

x.shape

Out[20]:

(490,)

In [21]:

y.shape

Out[21]:

(490,)

In [22]:

plt.scatter(x, y)
plt.show()

使用简单线性回归法

In [23]:

from playML.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, seed=666)

In [24]:

x_train.shape

Out[24]:

(392,)

In [25]:

y_train.shape

Out[25]:

(392,)

In [26]:

x_test.shape

Out[26]:

(98,)

In [27]:

y_test.shape

Out[27]:

(98,)

In [28]:

from playML.SimpleLinearRegression import SimpleLinearRegression

In [29]:

reg = SimpleLinearRegression()
reg.fit(x_train, y_train)

Out[29]:

SimpleLinearRegression()

In [30]:

reg.a_

Out[30]:

7.8608543562689555

In [31]:

reg.b_

Out[31]:

-27.459342806705543

In [32]:

plt.scatter(x_train, y_train)
plt.plot(x_train, reg.predict(x_train), color='r')
plt.show()

In [35]:

plt.scatter(x_train, y_train)
plt.scatter(x_test, y_test, color="c")
plt.plot(x_train, reg.predict(x_train), color='r')
plt.show()

In [36]:

y_predict = reg.predict(x_test)

MSE

In [37]:

mse_test = np.sum((y_predict - y_test)**2) / len(y_test)
mse_test

Out[37]:

24.156602134387438

RMSE

In [38]:

from math import sqrt

rmse_test = sqrt(mse_test)
rmse_test

Out[38]:

4.914936635846635

MAE

In [39]:

mae_test = np.sum(np.absolute(y_predict - y_test))/len(y_test)
mae_test

Out[39]:

3.5430974409463873

封装我们自己的评测函数

代码参见 这里

In [40]:

from playML.metrics import mean_squared_error
from playML.metrics import root_mean_squared_error
from playML.metrics import mean_absolute_error

In [41]:

mean_squared_error(y_test, y_predict)

Out[41]:

24.156602134387438

In [42]:

root_mean_squared_error(y_test, y_predict)

Out[42]:

4.914936635846635

In [43]:

mean_absolute_error(y_test, y_predict)

Out[43]:

3.5430974409463873

scikit-learn中的MSE和MAE

In [44]:

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error

In [45]:

mean_squared_error(y_test, y_predict)

Out[45]:

24.156602134387438

In [46]:

mean_absolute_error(y_test, y_predict)

Out[46]:

3.5430974409463873

MSE v.s. MAE

标签:plt,predict,vs,train,MAE,test,import,MSE,Out
来源: https://blog.csdn.net/qq_39154376/article/details/122596990

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有