-
2022-02-08 16:05:49
python使用numpy包编写自定义函数计算SMAPE(对称平均绝对百分比误差)指标Symmetric mean absolute percentage error (SMAPE)、SMAPE指标解读、SMAPE指标使用的注意事项
目录
更多相关内容 -
Python使用numpy包编写自定义函数计算平均绝对误差(MAE、Mean Absolute Error)、评估回归模型和时间序列...
2022-02-10 21:16:01Python使用numpy包编写自定义函数计算平均绝对误差(MAE、Mean Absolute Error)、评估回归模型和时间序列模型、解读MAEPython使用numpy包编写自定义函数计算平均绝对误差(MAE、Mean Absolute Error)、评估回归模型和时间序列模型、解读MAE
目录
-
python 计算平均平方误差(MSE)的实例
2021-01-01 04:26:33我们要编程计算所选直线的平均平方误差(MSE), 即数据集中每个点到直线的Y方向距离的平方的平均数,表达式如下: MSE=1n∑i=1n(yi−mxi−b)2 最初麻烦的写法 # TODO 实现以下函数并输出所选直线的MSE def ... -
numpy的版本(平均绝对偏差)
2021-01-14 14:26:53这里有一个量化的NumPy的方法 -# From this post : http://stackoverflow.com/a/40085052/3293881def strided_app(a, L, S): # Window len = L, Stride len/stepsize = Snrows = ((a.size-L)//S)+1n = a.strides[0]...这里有一个量化的NumPy的方法 -
# From this post : http://stackoverflow.com/a/40085052/3293881
def strided_app(a, L, S): # Window len = L, Stride len/stepsize = S
nrows = ((a.size-L)//S)+1
n = a.strides[0]
return np.lib.stride_tricks.as_strided(a, shape=(nrows,L), strides=(S*n,n))
# From this post : http://stackoverflow.com/a/14314054/3293881 by @Jaime
def moving_average(a, n=3) :
ret = np.cumsum(a, dtype=float)
ret[n:] = ret[n:] - ret[:-n]
return ret[n - 1:]/n
def mad_numpy(a, W):
a2D = strided_app(a,W,1)
return np.absolute(a2D - moving_average(a,W)[:,None]).mean(1)
运行测试 -
In [617]: data = np.random.randint(0,9,(10000))
...: df = pd.DataFrame(data)
...:
In [618]: pandas_out = pd.rolling_apply(df,90,mad).values.ravel()
In [619]: numpy_out = mad_numpy(data,90)
In [620]: np.allclose(pandas_out[89:], numpy_out) # Nans part clipped
Out[620]: True
In [621]: %timeit pd.rolling_apply(df,90,mad)
10 loops, best of 3: 111 ms per loop
In [622]: %timeit mad_numpy(data,90)
100 loops, best of 3: 3.4 ms per loop
In [623]: 111/3.4
Out[623]: 32.64705882352941
巨大32x+加速有过糊涂大熊猫的解决方案!
-
机器学习回归模型的常用评价指标(8):均方误差MSE、平均绝对误差MAE、平均绝对比例误差MAPE、相关系数R2,...
2021-01-14 14:26:53模型评价:回归模型的常用评价指标1) ...模型越准确3) 较为好解释的评价指标:平均绝对误差(MAE)指标解释:所有样本的样本误差的绝对值的均值指标解读:平均绝对误差的单位与因变量单位一致,越接近0,模型越准确4...模型评价:回归模型的常用评价指标
1) 样本误差:衡量模型在一个样本上的预测准确性
样本误差 = 样本预测值 - 样本实际值
2) 最常用的评价指标:均误差方(MSE)
指标解释:所有样本的样本误差的平方的均值
指标解读:均误差方越接近0,模型越准确
3) 较为好解释的评价指标:平均绝对误差(MAE)
指标解释:所有样本的样本误差的绝对值的均值
指标解读:平均绝对误差的单位与因变量单位一致,越接近0,模型越准确
4)平均绝对误差的衍生指标:平均绝对比例误差(MAPE)
指标解释:所有样本的样本误差的绝对值占实际值的比值
指标解读:指标越接近与0,模型越准确
5)模型解释度:R squared R方 r2
指标解释:应变量的方差能被自变量解释的程度
指标解读:指标越接近1,则代表自变量对于应变量的解释度越高
使用sklearn查看回归模型的各项指标
1) 加载数据
import pandas as pd
import matplotlib.pyplot as plt
import os
os.chdir(r'C:\Users\86177\Desktop')
# 样例数据读取
df = pd.read_excel('realestate_sample_preprocessed.xlsx')
# 根据共线性矩阵,保留与房价相关性最高的日间人口,将夜间人口和20-39岁夜间人口进行比例处理
def age_percent(row):
if row['nightpop'] == 0:
return 0
else:
return row['night20-39']/row['nightpop']
df['per_a20_39'] = df.apply(age_percent,axis=1)
df = df.drop(columns=['nightpop','night20-39'])
# 数据集基本情况查看
print(df.shape)
print(df.dtypes)
print(df.isnull().sum())
–> 输出的结果为:(这里直接加载数据并对共线性数据进行处理)
(898, 9)
id int64
complete_year int64
average_price float64
area float64
daypop float64
sub_kde float64
bus_kde float64
kind_kde float64
per_a20_39 float64
dtype: object
id 0
complete_year 0
average_price 0
area 0
daypop 0
sub_kde 0
bus_kde 0
kind_kde 0
per_a20_39 0
dtype: int64
2) 划分数据集
x = df[['complete_year','area', 'daypop', 'sub_kde',
'bus_kde', 'kind_kde','per_a20_39']]
y = df['average_price']
print(x.shape)
print(y.shape)
–> 输出的结果为:(创建模型前需要将数据集划分好,查看数据维度)
(898, 7)
(898,)
3) 建立回归模型
之前提到的Pipeline模型工作流就可以直接使用了,将要执行的工作流程全部封装在Pipeline中,具体的有:
数据标准化
StandardScaler()
,
数据纠偏
PowerTransformer()
,
变量拓展
PolynomialFeatures(degree=3)
,样本值为1000,特征有7个,这里选择
degree=3
,
线性回归中选择了
lasso
回归,里面的
LassoCV(alphas=(list(np.arange(8, 10) * 10)
,可以实现自动训练出最优的
alpha
值带入模型中
import numpy as np
from sklearn.linear_model import LinearRegression, LassoCV
from sklearn.model_selection import KFold
from sklearn.preprocessing import StandardScaler, PowerTransformer
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import Pipeline
# 构建模型工作流
pipe_lm = Pipeline([
('sc',StandardScaler()),
('power_trans',PowerTransformer()),
('polynom_trans',PolynomialFeatures(degree=3)),
('lasso_regr', LassoCV(alphas=(
list(np.arange(8, 10) * 10)
),
cv=KFold(n_splits=3, shuffle=True),
n_jobs=-1))
])
print(pipe_lm)
–> 输出的结果为:
Pipeline(memory=None,
steps=[('sc',
StandardScaler(copy=True, with_mean=True, with_std=True)),
('power_trans',
PowerTransformer(copy=True, method='yeo-johnson',
standardize=True)),
('polynom_trans',
PolynomialFeatures(degree=3, include_bias=True,
interaction_only=False, order='C')),
('lasso_regr',
LassoCV(alphas=[80, 90], copy_X=True,
cv=KFold(n_splits=3, random_state=None, shuffle=True),
eps=0.001, fit_intercept=True, max_iter=1000,
n_alphas=100, n_jobs=-1, normalize=False,
positive=False, precompute='auto', random_state=None,
selection='cyclic', tol=0.0001, verbose=False))],
verbose=False)
4) 查看模型表现
import warnings
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score
warnings.filterwarnings('ignore')
pipe_lm.fit(x,y)
y_predict = pipe_lm.predict(x)
print(f'mean squared error is: {mean_squared_error(y,y_predict)}')
print(f'mean absolute error is: {mean_absolute_error(y,y_predict)}')
print(f'R Squared is: {r2_score(y,y_predict)}')
# 计算MAPE
check = df[['average_price']]
check['y_predict'] = pipe_lm.predict(x)
check['abs_err'] = abs(check['y_predict']-check['average_price'] )
check['ape'] = check['abs_err']/check['average_price']
ape = check['ape'].mean()
print(f'mean absolute percent error is: {ape}')
–> 输出的结果为:(MAPE需要手动单独计算,没有模块可以使用)
mean squared error is: 27731808.3971612
mean absolute error is: 3764.8763555076
R Squared is: 0.671538868244777
mean absolute percent error is: 0.16143438261828635
最后可以看一下
check
数据
average_pricey_predictabs_errape
033464.00040132.9811806668.9811800.199288
138766.00034522.8543224243.1456780.109455
233852.00032718.5080301133.4919700.033484
339868.00039242.949615625.0503850.015678
442858.00039242.9496153615.0503850.084349
...............
89340113.00039559.520171553.4798290.013798
89441806.00048224.3538206418.3538200.153527
89551895.37537610.72715214284.6478480.275259
89634546.00044010.8965349464.8965340.273980
89733595.00032194.0551271400.9448730.041701
898 rows × 4 columns
-
mlprepression sklearn中的绘图平均绝对误差(MAE)
2021-01-14 14:26:55计算你的折叠中的训练和测试错误,然后使用列表来附加结果。最后,绘制结果执行以下操作:from sklearn.neural_network import MLPRegressorfrom sklearn.metrics import mean_absolute_errorimport numpy as npfrom... -
python求相关系数(R)、均方根误差(RMSE)、平均绝对误差(MAE)、效率系数(E)
2020-12-06 05:19:43", sum(absError) / len(absError))#平均绝对误差MAE aDeviation = [] aMean = sum(a) / len(a)#a平均值 for val in a: aDeviation.append((val - aMean) * (val - aMean)) print("a efficiency = ", 1-sum... -
python中的MAPE(平均绝对百分比误差)测量结果
2021-03-22 08:13:38我尝试在我的随机林代码中测量MAPE(平均绝对百分比误差)值。MAE值为7.5。当我试图计算MAPE时,它输出:Accuracy: -inf %这是我计算MAPE的代码。如何使它工作,或者为什么它不计算一个值。在^{pr2}$以下是值:errors:... -
如何用numpy计算不规则阵列的均值和标准差
2020-12-03 19:07:08Numpy不能对它们做太多的处理,并且您可能为它们生成的任何代码都将总是不可靠和缓慢的,因为numpy不是这样工作的。它将它们转换为object类型:Samplearray([[1, 2, 3], [1, 2]], dtype=object)几乎没有numpy函数在... -
python使用numpy包编写自定义函数计算MAPE(平均绝对百分比误差)指标mean absolute percentage error (MAPE)...
2022-02-07 21:17:27python使用numpy包编写自定义函数计算MAPE(平均绝对百分比误差)指标mean absolute percentage error (MAPE)、MAPE指标解读、MAPE指标使用的注意事项 -
计算均方、绝对偏差和自定义相似度度量Python/NumPy
2020-12-06 13:49:07导入模块首先,让我们导入所有相关模块/函数,这些模块/函数将在本文列出的各种方法中使用-from skimage.util import view_as_windowsfrom skimage.feature import match_templateimport cv2from cv2 import ... -
Python代码实现相对误差公式计算
2019-05-09 15:47:19Python代码实现相对误差公式计算 代码: # 相对误差 def mean_relative_error(y_true, y_pred,): import numpy as np relative_error = np.average(np.abs(y_true - y_pred) / y_true, axis=0) return ... -
常用回归评价指标:均方误差(MSE)、均方根误差(RMSE)、平均绝对误差(MAE)、平均百分比误差(MAPE)、绝对...
2021-08-10 11:14:12import numpy as np from sklearn import metrics # 定义MAPE def mape(y_true, y_pred): return np.mean(np.abs((y_pred - y_true) / y_true)) * 100 # MSE print(metrics.mean_squared_error(y_true, y_pred)... -
回归三大评价指标均方误差(MSE):均方根误差(RMSE)平均绝对误差(MAE)平均绝对百分比误差 MAPE
2019-08-19 17:09:31对于回归预测结果,通常会有平均绝对误差、平均绝对百分比误差、均方误差等多个指标进行评价。这里,我们先介绍最常用的3个 目录 平均绝对误差(MAE) 均方误差(MSE):均方根误差(RMSE) 平均绝对百分比... -
Python科学计算:用NumPy快速处理数据
2020-08-17 14:26:15我来分享一下数据分析中 Numpy 库的使用,本文内容较多,不可能每段代码的输出过程、输出结果分析这显然工作量不是一点点。但我都结合了大量的代码块,希望小伙伴动手运行代码并分析所得到的结果。当你能做到这点的... -
python科学计算之numpy
2021-02-23 23:39:39python科学计算之numpy numpy:科学计算包,支持N维数组运算、处理大型矩阵、成熟的广播函数库、矢量运算、线性代数、傅里叶变换、随机数生成,并可与C++/Fortran语言无缝结合。树莓派Python v3默认安装已经包含了... -
Python数据可视化:如何创建误差图
2020-12-06 05:18:39一图胜千言,使用Python的matplotlib库,可以快速创建高质量的图形。这是Python数据可视化的系列短篇,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib, seaborn, plotly等工具创建不同主题的图表。该... -
Python编程:方差、标准差、均方差、均方根值、均方误差、均方根误差
2019-02-26 15:46:49python实现代码 # -*- coding: utf-8 -*- import math def get_average(records): """ 平均值 """ return sum(records) / len(records) def get_... -
python深度学习入门-误差反向传播法
2021-05-01 18:08:10通过使用计算图,可以直观地把握计算过程。 计算图的节点是由局部计算构成的。局部计算构成全局计算。 计算图的正向传播进行一般的计算。通过计算图的反向传播,可以计算各个节点的导数。 通过将神经网络的组成... -
import numpy as np import pandas as pd import matplotlib.pyplot as plt from scipy.stats import pearsonr freq = 'D' t0 = '2020-01-01' data_length = 7*10 num_ts = 3 period = 7 fit_series, origin_...
-
如何在Python中创建线性回归机器学习模型?「入门篇」
2021-03-06 23:09:03本文将教你如何使用 scikit-learn 库在Python中创建、训练和测试你的第一个线性、逻辑回归机器学习模型,本文适合大部分的新人小白。线性回归机器学习模型1.要使用的数据集由于线性回归是我们在本文中学习的第一个... -
Python数据分析——①numpy模块三大基础运用
2021-10-03 21:51:02python提供的能提供数组与矩阵运算的扩展库,简便快捷,运用为主 二、数组: 1.数组创建: 2.数组元素修改: 3.数组的运算: 4.数组元素访问与排序等操作: 5.数组的运用: 三、矩阵:matrix... -
使用Python实现线性回归
2021-12-05 16:52:41使用最小二乘法进行线性回归,采用均方误差来表示误差,使用梯度下降法进行最小化误差。 实验内容(表格区域可拉长) (1)已知样本输入和标签如x.txt和y.txt所示,试使用Python求出i.) y=2x+2;ii.) y=x+3;iii.)y ... -
【机器学习(8)】回归模型的常用评价指标:均方差MSE、均绝对误差MAE、均绝对比例误差MAPE、相关性系数R2
2020-03-05 17:28:481) 样本误差:衡量模型在一个样本上的预测准确性 样本误差 = 样本预测值 - 样本实际值 2) 最常用的评价指标:均误差方(MSE) 指标解释:所有... -
Python机器学习算法的7个损失函数的详细指南
2020-12-17 07:28:27VK来源|Analytics Vidhya概述学习什么是损失函数以及它们如何在机器学习算法中工作损失函数实际上是我们经常使用的技术的核心本文介绍了多种损失函数与它们的工作原理以及如何使用Python对它们进行编程介绍想象一下-... -
Python用np求两个数组的均值,方差,标准差,协方差
2022-03-08 11:12:57import numpy as np arr = [100,98,87,65,82,99,92,99,100] arr1 =[35,34,30,24,28,35,32,34,35] #求均值 arr_mean = np.mean(arr) #求方差 arr_var = np.var(arr) #求标准差 arr_std = np.std(arr,ddof=1) #求... -
如何在 Python 中创建一个简单的神经网络
2020-12-12 10:08:00误差列表将包含每个时期的平均绝对误差(MAE) ,这个极限将描述一个向量应该被分类为一个向量,元素10作为第一个元素而不是。然后,还有一些变量可以用来存储真实阳性、假阳性、真实阴性和假阴性的数量。 步骤4.2: ... -
python数据容器专题
2020-12-24 16:07:40python基础知识专题 - 列表、元组、集合、字典实例教程(一)列表 若纠正错误请联系博主:李俊才 邮箱:291148484@163.com 希望对大家所有帮助! 1、列表 1.1 列表的创建、切片 1.1.1 创建列表 【eg1-1】通过"[]...