一些常用的判断预测、拟合、回归精度的指标
-
一. 精度指标的公式
按指标量纲的不同,将下列11种精度指标分为3类:第①类是零次的相对性指标,第②类是一次的绝对性指标,第③类是二次的绝对性指标。 -
二. 精度函数和测试代码,代码最后将11种精度指标结果整合为一个精度结果;每种精度指标的使用条件和优势劣势写在备注中。
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import random
import seaborn as sns
from sklearn import metrics
from statsmodels.tools import eval_measures
from scipy import stats
from warnings import filterwarnings
filterwarnings("ignore")
sns.set_style('darkgrid')
plt.rc('font', size=10)# ###########---------------set up and plot input data-----------------######################
base_value = 10 # 设置level、trend、season项的基数
steps_day, steps_week = 7, 1
length = [steps_day*5+steps_day, steps_week*5+steps_week] # 代表每个序列的长度,分别为周、日序列的一年及两年weights = []
for i in range(-base_value + 1, 1):weights.append(0.5 ** i) # 设置y_level项随机序列的权重呈递减指数分布,底数越小,y_level中较小值所占比例越大。
weights = np.array(weights)# #########################################################--构造乘法周期性时间序列,模拟真实销售
y_level_actual, y_trend_actual, y_season_actual, y_noise_actual, y_input_mul_actual = [[]] * len(length), [[]] * len(length), [[]] * len(length), [[]] * len(length), [[]] * len(length)
for i in range(0, len(length)):y_season_actual[i] = np.sqrt(base_value) * np.sin(np.linspace(np.pi / 2, 10 * np.pi, length[i])) # 用正弦函数模拟周期性y_level_actual[i] = np.array(random.choices(range(0, base_value), weights=weights, k=length[i])) / np.average(abs(y_season_actual[i])) + np.average(abs(y_season_actual[i])) # 用指数权重分布随机数模拟水平项y_trend_actual[i] = (2 * max(y_season_actual[i]) + np.log(np.linspace(2, 2 ** (base_value / 8), num=length[i])) / np.log(1.1)+ (min(np.log(np.linspace(2, 2 ** (base_value / 8), num=length[i])) / np.log(1.1)) + max(np.log(np.linspace(2, 2 ** (base_value / 8), num=length[i])) / np.log(1.1)))/ length[i] * np.linspace(1, length[i], num=length[i])) / 10 * np.average(y_level_actual[i]) # 用对数函数与线性函数的均值模拟趋势性y_noise_actual[i] = 3*np.random.standard_t(length[i]-1, length[i]) # 假定数据处于理想状态,并使噪音以乘法方式进入模型,则可令噪音在0附近呈学生分布。y_noise_actual[i][abs(y_noise_actual[i]) < max(y_noise_actual[i])*0.9] = 1 # 保留随机数中的离群值,将非离群值置为1y_input_mul_actual[i] = (y_level_actual[i] + y_trend_actual[i]) * y_season_actual[i] * y_noise_actual[i] # 假定周期项以乘法方式组成输入数据print(f'第{i}条真实序列中水平项的极差:{max(y_level_actual[i]) - min(y_level_actual[i])},均值:{np.mean(y_level_actual[i])}')print(f'第{i}条真实序列中趋势项的极差:{max(y_trend_actual[i]) - min(y_trend_actual[i])},均值:{np.mean(y_trend_actual[i])}')print(f'第{i}条真实序列中周期项的极差:{max(y_season_actual[i]) - min(y_season_actual[i])},均值:{np.mean(y_season_actual[i])}')print(f'第{i}条真实序列中噪音项的极差:{max(y_noise_actual[i]) - min(y_noise_actual[i])},均值:{np.mean(y_noise_actual[i])}')print(f'第{i}条真实乘法性序列最终极差:{max(y_input_mul_actual[i]) - min(y_input_mul_actual[i])},均值:{np.mean(y_input_mul_actual[i])}', '\n')y_level_actual[i] = pd.Series(y_level_actual[i]).rename('y_level_actual')y_trend_actual[i] = pd.Series(y_trend_actual[i]).rename('y_trend_actual')y_season_actual[i] = pd.Series(y_season_actual[i]).rename('y_season_actual')y_noise_actual[i] = pd.Series(y_noise_actual[i]).rename('y_noise_actual')y_input_mul_actual[i] = pd.Series(y_input_mul_actual[i]).rename('y_input_mul_actual')# 绘制四条乘法季节性时间序列;xlim让每条折线图填充满x坐标轴
plt.figure('mul_actual_pred: day', figsize=(5,10))
ax1 = plt.subplot(5,1,1)
xlim = plt.gca().set_xlim(0, length[0]-1)
ax2 = plt.subplot(5,1,2)
xlim = plt.gca().set_xlim(0, length[0]-1)
ax3 = plt.subplot(5,1,3)
xlim = plt.gca().set_xlim(0, length[0]-1)
ax4 = plt.subplot(5,1,4)
xlim = plt.gca().set_xlim(0, length[0]-1)
ax5 = plt.subplot(5,1,5)
xlim = plt.gca().set_xlim(0, length[0]-1)
y_input_mul_actual[0].plot(ax=ax1, legend=True)
y_level_actual[0].plot(ax=ax2, legend=True)
y_trend_actual[0].plot(ax=ax3, legend=True)
y_season_actual[0].plot(ax=ax4, legend=True)
y_noise_actual[0].plot(ax=ax5, legend=True)plt.figure('mul_actual_pred: week', figsize=(5,10))
ax1 = plt.subplot(5,1,1)
xlim = plt.gca().set_xlim(0, length[1]-1)
ax2 = plt.subplot(5,1,2)
xlim = plt.gca().set_xlim(0, length[1]-1)
ax3 = plt.subplot(5,1,3)
xlim = plt.gca().set_xlim(0, length[1]-1)
ax4 = plt.subplot(5,1,4)
xlim = plt.gca().set_xlim(0, length[1]-1)
ax5 = plt.subplot(5,1,5)
xlim = plt.gca().set_xlim(0, length[1]-1)
y_input_mul_actual[1].plot(ax=ax1, legend=True)
y_level_actual[1].plot(ax=ax2, legend=True)
y_trend_actual[1].plot(ax=ax3, legend=True)
y_season_actual[1].plot(ax=ax4, legend=True)
y_noise_actual[1].plot(ax=ax5, legend=True)##########################################################--构造乘法周期性时间序列,模拟预测销售
y_level_pred, y_trend_pred, y_season_pred, y_noise_pred, y_input_mul_pred = [[]] * len(length), [[]] * len(length), [[]] * len(length), [[]] * len(length), [[]] * len(length)
for i in range(0, len(length)):y_season_pred[i] = 1/2 * np.sqrt(base_value) * np.sin(np.linspace(np.pi / 2, 10 * np.pi, length[i])) # 用正弦函数模拟周期性,使预测销售的波动振幅比真实销售小y_level_pred[i] = np.array(random.choices(range(0, base_value), weights=weights, k=length[i])) / np.average(abs(y_season_pred[i])) + np.average(abs(y_season_pred[i])) # 用指数权重分布随机数模拟水平项,使其相对于真实销售有所偏移y_trend_pred[i] = (2 * max(y_season_pred[i]) + np.log(np.linspace(2, 2 ** (base_value / 8), num=length[i])) / np.log(1.1)+ (min(np.log(np.linspace(2, 2 ** (base_value / 8), num=length[i])) / np.log(1.1)) + max(np.log(np.linspace(2, 2 ** (base_value / 8), num=length[i])) / np.log(1.1)))/ length[i] * np.linspace(1, length[i], num=length[i])) / 10 * np.average(y_level_pred[i]) # 用对数函数与线性函数的均值模拟趋势性y_noise_pred[i] = np.random.standard_t(length[i]-1, length[i]) # 假定数据处于理想状态,并使噪音以乘法方式进入模型,则可令噪音在0附近呈学生分布;使其比真实销售的噪音小。y_noise_pred[i][abs(y_noise_pred[i]) < max(y_noise_pred[i])*0.9] = 1 # 保留随机数中的离群值,将非离群值置为1y_input_mul_pred[i] = (y_level_pred[i] + y_trend_pred[i]) * y_season_pred[i] * y_noise_pred[i] # 假定周期项以乘法方式组成输入数据print(f'第{i}条预测序列中水平项的极差:{max(y_level_pred[i]) - min(y_level_pred[i])},均值:{np.mean(y_level_pred[i])}')print(f'第{i}条预测序列中趋势项的极差:{max(y_trend_pred[i]) - min(y_trend_pred[i])},均值:{np.mean(y_trend_pred[i])}')print(f'第{i}条预测序列中周期项的极差:{max(y_season_pred[i]) - min(y_season_pred[i])},均值:{np.mean(y_season_pred[i])}')print(f'第{i}条预测序列中噪音项的极差:{max(y_noise_pred[i]) - min(y_noise_pred[i])},均值:{np.mean(y_noise_pred[i])}')print(f'第{i}条预测乘法性序列最终极差:{max(y_input_mul_pred[i]) - min(y_input_mul_pred[i])},均值:{np.mean(y_input_mul_pred[i])}', '\n')y_level_pred[i] = pd.Series(y_level_pred[i]).rename('y_level_pred')y_trend_pred[i] = pd.Series(y_trend_pred[i]).rename('y_trend_pred')y_season_pred[i] = pd.Series(y_season_pred[i]).rename('y_season_pred')y_noise_pred[i] = pd.Series(y_noise_pred[i]).rename('y_noise_pred')y_input_mul_pred[i] = pd.Series(y_input_mul_pred[i]).rename('y_input_mul_pred')# 绘制四条乘法季节性时间序列;xlim让每条折线图填充满x坐标轴
plt.figure('mul_actual_pred: day', figsize=(5,10))
ax1 = plt.subplot(5,1,1)
xlim = plt.gca().set_xlim(0, length[0]-1)
ax2 = plt.subplot(5,1,2)
xlim = plt.gca().set_xlim(0, length[0]-1)
ax3 = plt.subplot(5,1,3)
xlim = plt.gca().set_xlim(0, length[0]-1)
ax4 = plt.subplot(5,1,4)
xlim = plt.gca().set_xlim(0, length[0]-1)
ax5 = plt.subplot(5,1,5)
xlim = plt.gca().set_xlim(0, length[0]-1)
y_input_mul_pred[0].plot(ax=ax1, legend=True)
y_level_pred[0].plot(ax=ax2, legend=True)
y_trend_pred[0].plot(ax=ax3, legend=True)
y_season_pred[0].plot(ax=ax4, legend=True)
y_noise_pred[0].plot(ax=ax5, legend=True)plt.figure('mul_actual_pred: week', figsize=(5,10))
ax1 = plt.subplot(5,1,1)
xlim = plt.gca().set_xlim(0, length[1]-1)
ax2 = plt.subplot(5,1,2)
xlim = plt.gca().set_xlim(0, length[1]-1)
ax3 = plt.subplot(5,1,3)
xlim = plt.gca().set_xlim(0, length[1]-1)
ax4 = plt.subplot(5,1,4)
xlim = plt.gca().set_xlim(0, length[1]-1)
ax5 = plt.subplot(5,1,5)
xlim = plt.gca().set_xlim(0, length[1]-1)
y_input_mul_pred[1].plot(ax=ax1, legend=True)
y_level_pred[1].plot(ax=ax2, legend=True)
y_trend_pred[1].plot(ax=ax3, legend=True)
y_season_pred[1].plot(ax=ax4, legend=True)
y_noise_pred[1].plot(ax=ax5, legend=True)def regression_accuracy(y_true, y_pred):""":param y_true: 若干条真实序列组成的一个list或array或series,其中的每条真实序列必须是带索引的series,为了能对>0的数值的索引取交集,并与y_pred中的预测序列按顺序一一对应:param y_pred: 若干条预测序列组成的一个list或array或series,其中的每条预测序列必须是带索引的series,为了能对>0的数值的索引取交集,并与y_true中的真实序列按顺序一一对应:return: 精度指标,按顺序分别是:最终精度指标,MAPE, SMAPE, RMSPE, MTD_p2, EMLAE, MAE, RMSE, MedAE, MTD_p1, MSE, MSLE测试几种常用的评价序列对的精度指标原则:1.带平方项的指标会放大在正负1之外的残差的影响,而压缩在正负1之内的残差的影响,由于各指标越接近零越好,则会惩罚正负1之外的残差,偏离正负1越远,越受到惩罚;而奖励正负1之内的残差。2.作对数变换的指标会降低离群值的影响,相对于不带对数项的指标,会惩罚非离群值。因为在(1,+∞)区间内,y=lnx的一阶导数比y=x的一阶导数小,则y=lnx比y=x递增慢。3.ln(1/x)+len(x)=0,即对一个数(如x)取对数,与其倒数(1/x)取对数,互为相反数;当x>0,ln(1/x)+x-1≥0,lnx+(1/x)-1≥0,可由求导证明;在(0,4]的区间内,lnx的增长速度快于x**(1/2),在[4,+∞)区间内,lnx的增长速度慢于x**(1/2),可由求导证明。"""if (len(y_true) != len(y_pred)) or (len(y_true) < 2):raise Exception('y_true与y_pred中序列条数必须相等且≥2')MAPE, SMAPE, RMSPE, MTD_p2 = [], [], [], [] # 零次的相对性指标EMLAE, MAE, RMSE, MedAE, MTD_p1 = [], [], [], [], [] # 一次的绝对性指标MSE, MSLE = [], [] # 二次的绝对性指标# y_true, y_pred无限制条件def emlae(y_true, y_pred):""":param y_true: 真实值,长度要与预测值长度相等:param y_pred: 预测值,长度要与真实值长度相等:return: EMLAE,将残差离群值压缩后的一次绝对性指标,对残差的离群值不如MAE敏感"""n = len(y_true)y_true = np.array(y_true)y_pred = np.array(y_pred)emlae = np.exp(sum(np.log(abs(y_pred - y_true) + 1)) / n) - 1return emlae# y_true != 0def mape(y_true, y_pred):""":param y_true: 真实值,长度要与预测值长度相等,且不能为0:param y_pred: 预测值,长度要与真实值长度相等:return: MAPE,零次的相对性指标,小数,代表预测值偏离真实值的平均程度;若>1,表示预测值偏离真实值的平均程度超过真实值的1倍,若<1,表示预测值偏离真实值的平均程度小于真实值的1倍"""n = len(y_true)y_true = np.array(y_true)y_pred = np.array(y_pred)mape = sum(abs((y_pred - y_true) / y_true)) / nreturn mape# y_true + y_pred != 0def smape(y_true, y_pred):""":param y_true: 真实值,长度要与预测值长度相等,与对应预测值不能同时为0:param y_pred: 预测值,长度要与真实值长度相等,与对应真实值不能同时为0:return: SMAPE,零次的相对性指标,小数,代表预测值偏离真实值的平均程度;受离群值影响比MAPE小;若>1,表示预测值偏离真实值的平均程度超过真实值与预测值均值的1倍,若<1,表示预测值偏离真实值的平均程度小于真实值与预测值均值的1倍"""n = len(y_true)norm = np.array(y_true)predict = np.array(y_pred)smape = sum(abs(2 * (y_pred - y_true) / (y_pred + y_true))) / nreturn smapefor i in range(len(y_true)):# 为了统一下列11个精度指标的条件,在y_true和y_pred的对应序列中,取大于0的对应点,即排除≤0的对应点;但不能取>0,可以取>0.001,否则若序列中存在大于0但非常接近0的数做分母,则会产生无穷大从而报"ZeroDivisionError: division by zero"的错误y_true[i] = y_true[i][(y_true[i] > 0.001) & (y_pred[i] > 0.001)]y_pred[i] = y_pred[i][(y_true[i] > 0.001) & (y_pred[i] > 0.001)]# 第一组,零次的相对性指标:MAPE.append(mape(y_true=np.array(y_true[i]), y_pred=np.array(y_pred[i]))) # y_true != 0; no biasSMAPE.append(smape(y_true=np.array(y_true[i]), y_pred=np.array(y_pred[i]))) # y_true + y_pred != 0; symmetric MAPE, no bias and more general, less susceptible to outliers than MAPE.RMSPE.append(eval_measures.rmspe(np.array(y_true[i]), np.array(y_pred[i])) / 10) # y_true != 0; susceptible to outliers of deviation ratio, if more, RMSPE will be larger than MAPE.MTD_p2.append(metrics.mean_tweedie_deviance(y_true=np.array(y_true[i]), y_pred=np.array(y_pred[i]), power=2)) # y_pred > 0, y_true > 0; less susceptible to outliers than MAPE when y_pred[i] / y_true[i] > 1, nevertheless, more susceptible to outliers than MAPE when y_pred[i] / y_true[i] < 1# 第二组,一次的绝对性指标:EMLAE.append(emlae(y_true=np.array(y_true[i]), y_pred=np.array(y_pred[i]))) # y_true, y_pred无限制条件; less susceptible to outliers of error than MAE, so this will penalize small deviation and award large deviation relative to MAE.MAE.append(metrics.mean_absolute_error(y_true=np.array(y_true[i]), y_pred=np.array(y_pred[i]))) # y_true, y_pred无限制条件; this metric has no penalty, no biasRMSE.append(eval_measures.rmse(np.array(y_true[i]), np.array(y_pred[i]))) # y_true, y_pred无限制条件;susceptible to outliers of error than MAE, so this will penalize large deviation and award small deviation relative to MAE.MedAE.append(metrics.median_absolute_error(y_true=np.array(y_true[i]), y_pred=np.array(y_pred[i]))) # y_true, y_pred无限制条件; if len(y) is relatively large; won't be affected by outliersMTD_p1.append(metrics.mean_tweedie_deviance(y_true=np.array(y_true[i]), y_pred=np.array(y_pred[i]), power=1)) # y_pred > 0, y_true ≥ 0; The higher `p` the less weight is given to extreme deviations between true and predicted targets.# 第三组,二次的绝对性指标:MSE.append(metrics.mean_squared_error(y_true=np.array(y_true[i]), y_pred=np.array(y_pred[i]))) # y_true, y_pred无限制条件; this metric penalizes a large residual greater than a small residual because of squareMSLE.append(metrics.mean_squared_log_error(y_true=np.array(y_true[i]), y_pred=np.array(y_pred[i]))) # y_true≥0, y_pred≥0; this metric penalizes an under-predicted estimate greater than an over-predicted estimate because of logarithmprint('第一组,零次的相对性指标:', '\n', 'MAPE:', MAPE, '\n', 'SMAPE:', SMAPE, '\n', 'RMSPE:', RMSPE, '\n', 'MTD_p2:', MTD_p2, '\n')print('第二组,一次的绝对性指标:', '\n', 'EMLAE:', EMLAE, '\n', 'MAE:', MAE, '\n', 'RMSE:', RMSE, '\n', 'MedAE:', MedAE, '\n', 'MTD_p1:', MTD_p1, '\n')print('第三组,二次的绝对性指标:', '\n', 'MSE:', MSE, '\n', 'MSLE:', MSLE, '\n')# 将各序列对的若干精度指标整合成各序列对的最终单一评价指标# 将各精度指标按序列对的维度进行归一化MAPE_1 = np.array(MAPE) / sum(np.array(MAPE))SMAPE_1 = np.array(SMAPE) / sum(np.array(SMAPE))RMSPE_1 = np.array(RMSPE) / sum(np.array(RMSPE))MTD_p2_1 = np.array(MTD_p2) / sum(np.array(MTD_p2))EMLAE_1 = np.array(EMLAE) / sum(np.array(EMLAE))MAE_1 = np.array(MAE) / sum(np.array(MAE))RMSE_1 = np.array(RMSE) / sum(np.array(RMSE))MedAE_1 = np.array(MedAE) / sum(np.array(MedAE))MTD_p1_1 = np.array(MTD_p1) / sum(np.array(MTD_p1))MSE_1 = np.array(MSE) / sum(np.array(MSE))MSLE_1 = np.array(MSLE) / sum(np.array(MSLE))# 用简单调和平均计算各序列对经归一化后的各个精度指标,形成各序列对的最终单一精度指标;调和平均受输入样本点离群值的影响最小,相比于其他平均值而言;序列对的数目必须≥2precision = []for i in range(len(y_true)):precision.append(stats.hmean([MAPE_1[i], SMAPE_1[i], RMSPE_1[i], MTD_p2_1[i], EMLAE_1[i], MAE_1[i], RMSE_1[i], MedAE_1[i], MTD_p1_1[i], MSE_1[i], MSLE_1[i]]))print('各序列对的最终精度:', '\n', np.array(precision), '\n')return precision, MAPE, SMAPE, RMSPE, MTD_p2, EMLAE, MAE, RMSE, MedAE, MTD_p1, MSE, MSLEresults = regression_accuracy(y_true=y_input_mul_actual, y_pred=y_input_mul_pred)
print(len(results), results)
- 三. 总结
- 基本无偏的,或者说对残差没有惩罚或奖励偏好的,或者说对残差离群值没有敏感性偏好的指标有MAE, MAPE, SMAPE, MedAE。
- 取平方的指标会放大离群残差的影响,即对残差离群值更敏感,即会惩罚绝对值大于1的残差,而奖励绝对值小于1的残差;其指标有:RMSPE,RMSE,MSE。
- 取对数项的指标,当该项处于(0,1]区间,会放大该项的影响,因为在(0,1]区间内,lnx比x增长快;当该项处于[1,+∞)区间,会压缩该项的影响,因为在[1,+∞)区间内,lnx比x增长慢;其指标有:mean_gamma_deviance, mean_poisson_deviance, EMLAE。
- 对于MSLE,会惩罚预测不足,相对于预测偏高而言;即如果预测不足比预测偏高更多,则指标会更差,即结果会更大。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- 江哥MySQL视频学习笔记--第10章 MySQL存储过程和函数-61 62-MySQL-预处理(掌握)
1.预处理: 所谓的预处理技术,最初也是由MySQL提出的一种减轻服务器压力的一种技术! - 传统mysql处理流程 1, 在客户端准备sql语句 select * from stu where id1; select * from stu where id2; 2, 发送sql语句到MySQL服务…...
2024/5/5 4:30:58 - 安装ncl
所有的NCL二进制源文件都在 Earth System Grid https://www.earthsystemgrid.org/dataset/ncl.html中列出。 目前最新的版本是 NCL 6.4.0 binaries 到你需要的版本,下载吧~ 如何安装NCL二进制文件? 首先需要确定的是,你想把文件安装在哪里。…...
2024/4/25 5:56:06 - Python中变量的作用域(局部变量和全局变量)
局部变量 定义:函数内部定义的变量,仅供函数内部使用 局部变量:例1 def sum(*args):count 0#局部变量for item in args:count itemreturn countprint(count)#这里会报错的,因为count仅仅属于函数内部本身,不能外部…...
2024/4/17 7:03:43 - 简单介绍mysql索引、事务与存储引擎知识以及使用命令
一、索引的概念 1.1、数据库索引 1.1.1、是一个排序的列表,存储着索引值和这个值所对应的物理地址,相当于一本书的目录 1.1.2、无须对整个表进行扫描,通过物理地址就可以找到所需数据 1.1.3、是表中一列或者若干列值排序的方法 1.1.4、需…...
2024/4/12 7:44:41 - 学游戏建模必须掌握的10个必备ZBrush操作小技巧,才能制作出惊艳四方的游戏模型
你对于建模最初的兴趣是什么?是看着那些MMD、王者荣耀精美的皮肤造型和其他精美的建模就很想自己动手试试?是自己通过相关网络信息了解到建模行业的薪资水平想转行?还是因为自己喜爱的明星出演的某个影视作品中的高能特效场景,激发…...
2024/4/12 8:50:09 - Address localhost:1099 is already in use
Address localhost:1099 is already in use: 如图,运行IDEA项目,显示Address localhost:1099 is already in use 原因分析: 这是因为端口被其他程序占用了,此时需要找到占用端口的程序并将程序结束。 解决方案&…...
2024/4/12 8:50:08 - 【MySQL】索引原理(四):创建索引的几点建议,列的离散度,前缀索引
我们容易有以一个误区,就是在经常使用的查询条件上都建立索引,索引越多越好,那到底是不是这样呢? 因为索引对于改善查询性能的作用是巨大的,所以我们的目标是尽量使用索引。但这并不意味着索引越多越好,因…...
2024/4/23 0:28:02 - 事物ACID原则与脏读 不可重复读 幻读
原子性(Atomicity) 原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一致性(Consistency) 事务前后数据的完整性必须保持一致。 隔离性(Isolationÿ…...
2024/4/22 9:10:04 - 类的三大特性(一)
类的三大特性一、继承1. 基本2. 继承3. 派生4. 经典类与新式类5. 多继承属性查找6. super() 继承查找7. 组合二、封装1. 封装基本介绍在外部访问隐藏属性父类不让子类覆盖自己的方法2. Property方法3. 伪装属性的修改与删除三、多态多肽与多态性鸭子类型(Duck Type&…...
2024/4/12 8:50:05 - 工业树莓派案例11:用树莓派优化汽车生产过程的数字化和交互式设计
技术背景 制造过程中的数字化转型涉及许多因素和不同的方法。传统的作业指导书有时包含数百个纸质文档,因此执行过程中经常会有很多错误和遗漏。 而将现有的传统作业指导书转换为更直观的交互式的工作指导,可以使制造生产过程变得更加智能化࿰…...
2024/4/12 8:50:04 - 利用xgboost提取文本标签
在文本中提取标签一向是NLP中的难点问题,因为文本可能存在多个标签,这是一个多标签多分类的问题。 sklearn.multiclass中有一个OneVsRestClassifier分类器,可以将二分类器转成多标签多分类器(通过one VS rest的方案)&a…...
2024/4/12 8:50:03 - 不起作用的浮动,你万万想不到
/*先贴html*/<div class"subcont"><img src"image/Latte.jpg" alt""><div class"subtext"><h2>拿铁Caff Latte</h2><p>这是一种传统的经典饮料——浓缩咖啡调入热牛奶,其上覆盖一层轻…...
2024/4/23 14:09:41 - fromData
FormData js中自带的构造函数对象 使用 客户端 const btn document.getElementById(btn); const form document.getElementById(form) btn.onclick function () { const formData new FormData(form)console.log(formData);let xhr new XMLHttpRequest()xhr.open(pos…...
2024/4/12 8:50:01 - 无向图顶点邻接多重表表示法
无向图顶点邻接多重表表示法 #include<iostream> using namespace std; #define MAX_VERTEX_NUM 20 typedef int VertexType; typedef int InfoType; typedef enum {unvisted,visted, }VisitIf; typedef struct Ebox {//边节点VisitIf mark; //访问标志int ivex, jvex;/…...
2024/4/12 8:50:00 - Redisson实现分布式锁
之前一篇介绍了使用setnx命令实现分布式锁,但是使用这种方式不是那么严谨,需要我们自行做一些额外操作(setnx lua方式)来保证锁的健壮性。 redisson为此就做了一些封装,使得我们使用分布式锁时应用就可以简单许多。 …...
2024/4/12 8:49:59 - webGL framebufferTexture2D方法介绍
英文原文:https://msdn.microsoft.com/library/dn302402(vvs.85).aspx 函数 : framebufferTexture2D 作用 : 将纹理附件添加到帧缓存对象上 调用: WebGLRenderingContext.framebufferTexture2D(target, attachment, textarget, …...
2024/4/25 8:24:10 - 影响物联网设备的因素
在可预见的未来,网络安全仍将是大多数组织的优先事项。黑客们仍在积极尝试渗透到公司和个人的各种网络系统中,其中勒索软件、恶意软件、间谍软件和其他不需要的程序继续感染系统,破坏数据并窃取知识产权。以下是影响物联网设备未来管理方式的…...
2024/4/12 8:49:57 - 江哥MySQL视频学习笔记--第09章 MySQL存储过程和函数-61 62-MySQL-预处理(掌握)
1.预处理: 所谓的预处理技术,最初也是由MySQL提出的一种减轻服务器压力的一种技术! - 传统mysql处理流程 1, 在客户端准备sql语句 select * from stu where id1; select * from stu where id2; 2, 发送sql语句到MySQL服务…...
2024/4/12 8:49:56 - Spring Data JPA 连接达梦数据库配置
1. 添加maven依赖 <dependency><groupId>com.dameng</groupId><artifactId>Dm8JdbcDriver18</artifactId><version>8.1.1.49</version> </dependency> <dependency><groupId>com.dameng</groupId><arti…...
2024/4/28 7:43:38 - SpringdataJPA Demo
基本概念 ORM:object-relational metadata,对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。 …...
2024/5/1 15:57:04
最新文章
- 奈氏准则和香农定理
一、奈奎斯特和香农 哈里奈奎斯特(Harry Nyquist)(左) 克劳德艾尔伍德香农(Claude Elwood Shannon)(右) 我们应该在心里记住他们,记住所有为人类伟大事业做出贡献的人,因为他们我们的生活变得越来越精彩&…...
2024/5/5 5:54:00 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/3/20 10:50:27 - Go语言中如何实现继承
完整课程请点击以下链接 Go 语言项目开发实战_Go_实战_项目开发_孔令飞_Commit 规范_最佳实践_企业应用代码-极客时间 Go语言中没有传统意义上的类和继承的概念,但可以通过嵌入类型(embedded types)来实现类似的功能。嵌入类型允许一个结构…...
2024/4/30 4:14:53 - PHP获取亚马逊商品详情api接口
亚马逊提供了一个名为Product Advertising API(PA API)的接口,可以用来获取亚马逊商品的详细信息。 要使用PA API,您需要进行以下几个步骤: 注册为亚马逊合作伙伴,并创建一个亚马逊开发人员账户。创建一个…...
2024/4/30 7:47:10 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/4 12:05:22 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/4 11:23:32 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/4 14:46:16 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/4 23:54:44 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/4 12:10:13 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/4 23:54:49 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/4 23:54:44 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/4 14:46:12 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/4 14:46:11 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/4 14:46:11 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/5 2:25:33 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/4 21:24:42 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/4 12:39:12 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/4 13:16:06 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/4 16:48:41 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/4 14:46:05 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/5 3:37:58 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/4 23:54:30 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/4 9:07:39 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/4 14:46:02 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57