超级干货 !数据平滑9大妙招(python版)_python指数平滑预测案例

大家好,对数据进行平滑处理的方法有很多种,具体的选择取决于数据的性质和处理的目的。如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份**Python全套学习资料**,都是我自己学习时整理的,希望可以帮到你,一起加油!

今天给大家分享9大常见数据平滑方法:

  1. 移动平均Moving Average

  2. 指数平滑Exponential Smoothing

  3. 低通滤波器

  4. 多项式拟合

  5. 贝塞尔曲线拟合

  6. 局部加权散点平滑Loess

  7. Kalman滤波

  8. 小波变换

  9. Savitzky-Golay滤波

移动平均Moving Average

移动平均(Moving Average)是一种最简单的数据平滑方法,用于平滑时间序列数据。它通过计算一定窗口内数据点的平均值来减少噪音,同时保留数据的趋势。移动平均可以是简单移动平均(SMA)或指数加权移动平均(EMA)。

简单移动平均(SMA): 简单移动平均是一种通过计算数据点在一个固定窗口内的平均值来平滑数据的方法。窗口的大小决定了平滑程度。较大的窗口将导致更平滑的曲线,但会减缓对趋势的反应,而较小的窗口将更敏感地跟随数据的波动。

import numpy as np
import matplotlib.pyplot as plt

# 生成示例数据
data = np.array([10, 15, 12, 18, 20, 14, 16, 22, 19, 25])

# 定义移动平均窗口大小
window_size = 3

# 计算简单移动平均
sma = np.convolve(data, np.ones(window_size) / window_size, mode='valid')

# 绘制原始数据和移动平均曲线
plt.figure(figsize=(10, 6))
plt.plot(data, label="原始数据", marker='o', color='blue')
plt.plot(np.arange(window_size - 1, len(data)), sma, label="移动平均", color='red')
plt.legend()
plt.title("简单移动平均示例")
plt.xlabel("数据点")
plt.ylabel("数值")
plt.grid(True)
plt.show()

指数加权移动平均-Exponential Weighted Moving Average,EWMA: 指数加权移动平均是一种通过对数据点应用指数权重来平滑数据的方法。它对最近的数据点给予较高的权重,而对较早的数据点给予较低的权重。这使得EMA更适合用于追踪快速变化的数据。

import numpy as np
import matplotlib.pyplot as plt

# 生成示例数据
data = np.array([10, 15, 12, 18, 20, 14, 16, 22, 19, 25])

# 定义平滑参数(通常称为平滑因子)
alpha = 0.2

# 计算EMA
ema = [data[0]]  # 初始EMA值等于第一个数据点
for i in range(1, len(data)):
    ema.append(alpha * data[i] + (1 - alpha) * ema[-1])

# 绘制原始数据和EMA曲线
plt.figure(figsize=(10, 6))
plt.plot(data, label="原始数据", marker='o', color='blue')
plt.plot(ema, label="EMA", color='red')
plt.legend()
plt.title("指数加权移动平均(EMA)示例")
plt.xlabel("数据点")
plt.ylabel("数值")
plt.grid(True)
plt.show()

指数平滑Exponential Smoothing

指数平滑(Exponential Smoothing)是一种常用的时间序列数据平滑和预测方法,用于处理具有趋势和季节性的数据。它通过分配不同权重给历史数据点,将较高权重分配给较新的数据,以捕获数据的变化趋势。指数平滑通常用于生成预测,特别是在需要对未来时间点进行预测的情况下。

指数平滑的主要特点包括:

  1. 加权平滑:指数平滑使用指数权重来平滑数据。较新的数据点获得更高的权重,而较旧的数据点获得较低的权重。这意味着它对最近的数据更为敏感,从而更好地捕获了数据的最新趋势。

  2. 三种主要形式:指数平滑有三种主要形式:简单指数平滑、双指数平滑和三重指数平滑。每种形式用于不同类型的数据和模式。

  • 简单指数平滑(Simple Exponential Smoothing)用于平滑具有趋势和季节性的数据。

  • 双指数平滑(Double Exponential Smoothing)用于平滑具有趋势但无季节性的数据。

  • 三重指数平滑(Triple Exponential Smoothing)用于平滑同时具有趋势和季节性的数据。

  1. 递归更新:指数平滑是一种递归方法,它将先前的平滑结果与新数据点相结合,以生成下一个时间点的平滑结果。

  2. 预测能力:指数平滑不仅用于平滑数据,还可以用于生成未来时间点的预测。这使得它在需求预测、股票价格预测和销售预测等领域非常有用。

  3. 适用性:指数平滑适用于平稳或非平稳的时间序列数据,它能够很好地处理趋势、季节性和噪声。

pip install statsmodels


import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.holtwinters import ExponentialSmoothing

# 生成示例时间序列数据
np.random.seed(0)
n = 100
index = pd.date_range(start="2022-01-01", periods=n, freq="D")
data = np.sin(np.linspace(0, 4 * np.pi, n)) + np.random.normal(0, 0.2, n)
time_series = pd.Series(data, index=index)

# 执行指数平滑
model = ExponentialSmoothing(time_series, trend='add', seasonal='add', seasonal_periods=7)
results = model.fit()

# 生成平滑后的数据和预测
smoothed = results.fittedvalues
forecast = results.forecast(steps=30)  # 预测未来30个时间点

# 绘制原始数据、平滑后的数据和预测
plt.figure(figsize=(10, 6))
plt.plot(time_series, label="原始数据", color='blue', alpha=0.6)
plt.plot(smoothed, label="指数平滑", color='red')
plt.plot(forecast, label="未来预测", color='green')
plt.legend()
plt.title("指数平滑示例")
plt.xlabel("时间")
plt.ylabel("数据值")
plt.grid(True)
plt.show()

低通滤波器

低通滤波器是一种信号处理工具,用于去除信号中高频成分,从而保留低频成分。在数据平滑的上下文中,低通滤波器用于减小或去除数据中的高频噪声或快速变化,以使数据趋于平滑,保留慢变化的趋势或周期性特征。

低通滤波器的工作原理是将信号通过一个滤波器,该滤波器允许低频成分通过,而抑制高频成分。这通常通过滤波器的频率响应函数来实现,频率响应函数定义了不同频率上的滤波器的行为。低通滤波器通常用于以下应用:

  • 去除高频噪声:在测量、传感器或通信中,信号通常会受到高频噪声的干扰,低通滤波器可用于去除这些噪声。

  • 数据平滑:在时间序列分析中,低通滤波器可以用来平滑数据,去除短期波动,从而更好地识别趋势和周期性特征。

  • 图像处理:在图像处理中,低通滤波器可用于去除图像中的高频噪声,使图像更加平滑。

  • 音频处理:在音频处理中,低通滤波器可用于去除音频信号中的高频噪声,改善音质。

提供一个Python案例:

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import butter, lfilter

# 生成示例数据
fs = 1000  # 采样频率
t = np.linspace(0, 5, 5 * fs, endpoint=False)
data = 5 * np.sin(2 * np.pi * 3 * t) + 2 * np.sin(2 * np.pi * 50 * t)

# 设计巴特沃斯低通滤波器
cutoff_freq = 10  # 截止频率(以Hz为单位)
nyquist_freq = 0.5 * fs
normal_cutoff = cutoff_freq / nyquist_freq
b, a = butter(4, normal_cutoff, btype='low', analog=False)

# 使用滤波器平滑数据
smoothed_data = lfilter(b, a, data)

# 绘制原始数据和平滑后的数据
plt.figure(figsize=(10, 6))
plt.plot(t, data, label="原始数据", color='blue')
plt.plot(t, smoothed_data, label="低通滤波后的数据", color='red')
plt.legend()
plt.title("巴特沃斯低通滤波器示例")
plt.xlabel("时间 (秒)")
plt.ylabel("数值")
plt.grid(True)
plt.show()

多项式拟合

多项式拟合(Polynomial Fitting)是一种数据平滑和曲线拟合的方法,它通过使用多项式函数来逼近或拟合原始数据,以便更好地描述数据的趋势或模式。多项式拟合的目标是找到一个多项式函数,它在给定的数据点上经过并能够很好地拟合这些点。

多项式拟合的一般形式如下:

其中,是自变量,是依赖于的因变量, 是多项式系数。通过调整这些系数,可以使多项式函数更好地拟合数据。

多项式拟合常用于以下情况:

  1. 数据平滑:多项式拟合可以用来消除数据中的噪声或波动,从而获得平滑的曲线。

  2. 趋势分析:多项式拟合可用于识别数据中的趋势,例如线性趋势(一阶多项式)、二次趋势(二阶多项式)或更高阶的趋势。

  3. 曲线拟合:多项式拟合可用于拟合实验数据,以获得与理论模型或理论曲线的最佳拟合。

  4. 数据插值:多项式插值是多项式拟合的特殊情况,它通过已知数据点之间的多项式来估计中间值。

多项式拟合的一般原则是选择合适的多项式阶数。阶数过低可能无法很好地拟合数据,而阶数过高可能会导致过度拟合,对新数据的波动非常敏感。因此,选择适当的多项式阶数是关键。

提供一个3阶多项式拟合的案例:

import numpy as np
import matplotlib.pyplot as plt

# 示例数据
x = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
y = np.array([10, 8, 7, 6, 5, 4, 3, 2, 1])

# 三阶多项式拟合
degree = 3
coefficients = np.polyfit(x, y, degree)

# 构建多项式函数
poly = np.poly1d(coefficients)

# 生成用于绘图的新X值
x_new = np.linspace(min(x), max(x), 100)

# 计算拟合后的Y值
y_new = poly(x_new)

# 绘制原始数据和三阶多项式拟合曲线
plt.figure(figsize=(10, 6))
plt.scatter(x, y, label="原始数据", color='blue')
plt.plot(x_new, y_new, label="三阶多项式拟合", color='red')
plt.legend()
plt.title("三阶多项式拟合示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.grid(True)
plt.show()

贝塞尔曲线

贝塞尔曲线(Bézier Curve)是一种数学曲线,常用于计算机图形和数据可视化领域。它的特点是平滑、连续,由控制点(Control Points)定义,可以用于创建平滑曲线或路径。贝塞尔曲线最常见的形式是二次贝塞尔曲线和三次贝塞尔曲线,分别由2个和3个控制点定义。

以下是二次和三次贝塞尔曲线的简要介绍:

  1. 二次贝塞尔曲线:二次贝塞尔曲线由三个点定义,分别是起始点(P0)、控制点(P1),和结束点(P2)。曲线从起始点出发,经过控制点,最终到达结束点。曲线的形状由控制点的位置决定,控制点引导了曲线的弯曲和走势。

  2. 三次贝塞尔曲线:三次贝塞尔曲线由四个点定义,分别是起始点(P0)、两个控制点(P1和P2),和结束点(P3)。曲线从起始点出发,经过两个控制点,最终到达结束点。与二次贝塞尔曲线相比,三次贝塞尔曲线具有更高的灵活性,可以描述更复杂的曲线形状。

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import make_interp_spline

# 生成示例数据
x = np.linspace(0, 10, 20)  # X坐标
y = np.random.rand(20) * 10  # 随机生成Y坐标

# 创建贝塞尔曲线插值器
tck = make_interp_spline(x, y, k=3)

# 生成平滑后的数据点
x_new = np.linspace(min(x), max(x), 200)  # 新的X坐标范围
y_smooth = tck(x_new)

# 绘制原始数据和平滑后的贝塞尔曲线
plt.figure(figsize=(10, 6))
plt.scatter(x, y, label="原始数据", color='blue')
plt.plot(x_new, y_smooth, label="平滑后的贝塞尔曲线", color='red')
plt.legend()
plt.title("贝塞尔曲线数据平滑示例")
plt.xlabel("X坐标")
plt.ylabel("Y坐标")
plt.grid(True)
plt.show()

局部加权散点平滑(Loess平滑)

Loess(局部加权散点平滑,Locally Weighted Scatterplot Smoothing)是一种非参数的数据平滑方法,通常用于拟合或平滑散点数据,以捕获数据的局部趋势和模式。Loess平滑是一种局部回归方法,它对于不同区域的数据采用不同的权重,以确保在数据的每个局部区域上都能获得较好的拟合。

Loess平滑的核心思想是在每个数据点附近拟合一个局部多项式模型,然后使用这些局部模型的加权平均来获得平滑曲线。在每个局部区域,距离某个数据点越近的数据点将获得更大的权重,而距离较远的数据点将获得较小的权重。这样,Loess能够更好地拟合数据的局部特性,同时降低了全局模型的过拟合风险。

Loess平滑的主要特点包括:

  1. 非参数性:Loess不需要假设数据的特定分布或形式,因此适用于各种类型的数据。

  2. 局部性:Loess平滑主要关注数据的局部趋势,而不是全局趋势,这使它特别适用于具有复杂、非线性趋势的数据。

  3. 可调参数:Loess允许用户指定平滑窗口的大小或带宽,以控制局部模型的拟合程度。较小的带宽会导致更强的局部适应,而较大的带宽会导致更平滑的曲线。

Loess平滑通常用于探索性数据分析、数据可视化、时间序列分析和回归建模的预处理步骤。它可以帮助用户识别数据中的局部特性、趋势和周期性,从而更好地理解数据的结构。在统计学和数据科学中,Loess平滑是一种有用的工具,用于减少噪声并提取数据中的信号。

提供一个Python案例:

import numpy as np
import matplotlib.pyplot as plt
import statsmodels.api as sm

# 生成示例数据
x = np.linspace(0, 10, 100)
y = np.sin(x) + np.random.normal(0, 0.2, 100)

# 执行Loess平滑
lowess = sm.nonparametric.lowess(y, x, frac=0.3)  # frac参数控制平滑带宽,可以调整以获得不同的平滑度

# 获取平滑后的数据
x_smooth, y_smooth = lowess.T

# 绘制原始数据和Loess平滑曲线
plt.figure(figsize=(10, 6))
plt.scatter(x, y, label="原始数据", color='blue', alpha=0.6)
plt.plot(x_smooth, y_smooth, label="Loess平滑", color='red')
plt.legend()
plt.title("Loess平滑示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.grid(True)
plt.show()

Kalman滤波

卡尔曼滤波(Kalman Filter)是一种用于状态估计和数据融合的强大数学和统计工具,最初由R.E. Kalman于1960年开发。卡尔曼滤波是一种递归的、最优的状态估计方法,通常用于处理含有噪声的时间序列数据,以估计系统的状态,同时提供估计的不确定性。

卡尔曼滤波的主要用途包括:

  1. 状态估计:卡尔曼滤波可以用于估计线性或非线性动态系统的状态变量,尤其是在系统中存在不完全或噪声观测的情况下。这对于跟踪运动物体、导航、定位以及环境感知等应用非常有用。

  2. 数据融合:卡尔曼滤波可以将多个传感器提供的信息融合在一起,以提供更准确的估计,降低估计误差。

  3. 控制系统:卡尔曼滤波还用于控制系统,以估计系统状态并制定控制策略,从而实现系统的自动控制。

卡尔曼滤波基于状态空间模型,其中系统状态通过线性或非线性动态模型演化,并且由观测模型通过传感器观测进行测量。卡尔曼滤波使用贝叶斯估计方法来不断更新系统状态的估计,考虑了过去的状态估计和新的观测数据,以提供最优的状态估计结果。卡尔曼滤波的主要目标是最小化估计误差的方差,从而提供最优的状态估计结果。

卡尔曼滤波有多个变种,包括扩展卡尔曼滤波(Extended Kalman Filter,EKF)和无迹卡尔曼滤波(Unscented Kalman Filter,UKF),用于处理非线性系统。这些滤波器的应用范围广泛,包括航空航天、自动驾驶汽车、机器人技术、金融建模和天气预测等领域。它们在数据平滑和状态估计方面提供了强大的工具。

先安装:

pip install pykalman


import numpy as np
import matplotlib.pyplot as plt
from pykalman import KalmanFilter

# 生成示例数据
np.random.seed(0)
n = 100
x = np.linspace(0, 10, n)
y = 0.1 * x + np.random.normal(0, 0.5, n)

# 创建卡尔曼滤波器
kf = KalmanFilter(initial_state_mean=0, n_dim_obs=1)
kf = kf.em(y, n_iter=10)

# 获取平滑后的数据
(filtered_state_means, _) = kf.filter(y)

# 绘制原始数据和卡尔曼滤波后的数据
plt.figure(figsize=(10, 6))
plt.plot(x, y, label="原始数据", color='blue', alpha=0.6)
plt.plot(x, filtered_state_means, label="卡尔曼滤波", color='red')
plt.legend()
plt.title("卡尔曼滤波数据平滑示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.grid(True)
plt.show()

小波变换

小波变换(Wavelet Transform)是一种用于信号处理和数据分析的数学方法。它是一种多尺度分析技术,可以将信号分解成不同尺度和频率的分量,以便更好地理解信号的局部特征和结构。小波变换在许多领域,包括信号处理、图像处理、数据压缩和模式识别等方面都有广泛的应用。

小波变换的主要特点包括:

  1. 多尺度分析:小波变换能够在不同尺度上分解信号,因此可以检测信号中的局部特征,从高频细节到低频整体。

  2. 时频局部性:与傅立叶变换不同,小波变换具有时频局部性,可以在时间和频率上同时分析信号。这使得它在分析非平稳信号和非线性信号时非常有用。

  3. 数据压缩:小波变换可以用于数据压缩,通过保留主要的小波系数,可以减小数据的存储空间和传输带宽。

  4. 特征提取:小波变换可以用于从信号中提取特征,用于模式识别、分类和检测任务。

小波变换有两种主要类型:连续小波变换(Continuous Wavelet Transform,CWT)和离散小波变换(Discrete Wavelet Transform,DWT)。

  • 连续小波变换(CWT)是一种在不同尺度上滑动小波函数,对信号进行连续分解的方法。CWT的主要特点是它提供了连续的尺度信息,但计算成本较高。

  • 离散小波变换(DWT)是一种通过滤波和下采样操作将信号分解成不同尺度的方法。DWT通过将信号分解成高频和低频部分,然后继续对低频部分进行分解,从而实现多尺度分析。DWT的计算效率高,适用于实际工程应用。

先安装:

pip install PyWavelets

Python案例:

import numpy as np
import matplotlib.pyplot as plt
import pywt

# 生成示例数据
x = np.linspace(0, 2 * np.pi, 400)
y = np.sin(x) + np.random.normal(0, 0.1, len(x))

# 执行小波变换
wavelet = 'db4'  # 选择小波基函数
level = 3  # 分解的级数
coeffs = pywt.wavedec(y, wavelet, level=level)

# 将高频部分系数置零,以实现平滑
coeffs_smoothed = [coeffs[0]] + [np.zeros_like(coeffs[i]) for i in range(1, len(coeffs))]

# 重构平滑后的信号
y_smoothed = pywt.waverec(coeffs_smoothed, wavelet)

# 绘制原始数据和平滑后的数据
plt.figure(figsize=(10, 6))
plt.plot(x, y, label="原始数据", color='blue', alpha=0.6)
plt.plot(x, y_smoothed, label="小波平滑", color='red')
plt.legend()
plt.title("小波变换数据平滑示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.grid(True)
plt.show()

Savitzky-Golay滤波器

Savitzky-Golay滤波是一种信号处理技术,用于对离散数据序列进行平滑和去噪。它是一种线性平滑滤波器,通过拟合多项式来估计数据点的平均值,以减小噪声和突发波动。Savitzky-Golay滤波器的主要思想是在局部窗口内对数据进行多项式拟合,从而获得平滑后的估计值。

Savitzky-Golay滤波的主要特点包括:

  1. 局部拟合:Savitzky-Golay滤波器使用一个固定大小的局部窗口来拟合多项式,通常窗口大小为奇数。对于每个数据点,它使用窗口内的数据点来执行多项式拟合,以获得该点的平滑估计值。

  2. 多项式拟合:滤波器使用多项式来拟合窗口内的数据点。常用的多项式阶数是2(二次多项式)或4(四次多项式),但可以根据需要选择不同的阶数。

  3. 数据平滑:Savitzky-Golay滤波器旨在平滑数据,减小数据中的高频噪声和突发波动。它保留了数据中的趋势和主要特征,同时去除了噪声。

  4. 适用性:Savitzky-Golay滤波器适用于各种领域,包括信号处理、光谱分析、化学分析、生物医学数据处理和图像处理等。它特别适用于光谱数据,因为它可以去除仪器噪声和光谱线的窄化。

  5. 平滑度可调:通过调整窗口大小和多项式阶数,可以控制滤波器的平滑度。较大的窗口和较高的多项式阶数可以提供更平滑的结果,而较小的窗口和较低的多项式阶数可以更好地保留数据的细节。

Savitzky-Golay滤波器是一种有效的数据平滑和去噪技术,它可以在许多领域用于处理具有噪声的数据,以提高数据的可解释性和分析能力。在Python中,你可以使用scipy.signal.savgol_filter函数来执行Savitzky-Golay滤波。

# pip install scipy

import numpy as np
import matplotlib.pyplot as plt
from scipy.signal import savgol_filter

# 生成示例数据
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x) + np.random.normal(0, 0.2, len(x))

# 执行Savitzky-Golay滤波
window_length = 11  # 窗口长度(奇数)
polyorder = 2  # 多项式阶数
y_smoothed = savgol_filter(y, window_length, polyorder)

# 绘制原始数据和平滑后的数据
plt.figure(figsize=(10, 6))
plt.plot(x, y, label="原始数据", color='blue', alpha=0.6)
plt.plot(x, y_smoothed, label="Savitzky-Golay滤波", color='red')
plt.legend()
plt.title("Savitzky-Golay滤波器数据平滑示例")
plt.xlabel("X轴")
plt.ylabel("Y轴")
plt.grid(True)
plt.show()

除了上述分享,如果你也喜欢编程,想获取开心消消乐源码 或 想通过学习Python获取更高薪资,这里给大家分享一份Python学习资料。

这里给大家展示一下我进的兼职群和最近接单的截图

私单

😝朋友们如果有需要的话,可以V扫描下方二维码联系领取哦~

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
在这里插入图片描述

1.Python学习路线

image-20230619144606466

python学习路线图1

2.Python基础学习
01.开发工具

02.学习笔记

在这里插入图片描述

03.学习视频

在这里插入图片描述
3.Python小白必备手册
在这里插入图片描述

在这里插入图片描述
因篇幅有限,仅展示部分资料,添加上方即可获取👆

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/733191.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

动手学深度学习(Pytorch版)代码实践 -卷积神经网络-28批量规范化

28批量规范化 """可持续加速深层网络的收敛速度""" import torch from torch import nn import liliPytorch as lp import matplotlib.pyplot as pltdef batch_norm(X, gamma, beta, moving_mean, moving_var, eps, momentum):""&quo…

【LeetCode刷题】232.用栈实现队列

目录 题目链接 图解思路 整体结构 实现过程 入队列 出队列 实现代码 MyQueue.h MyQueue.c stack.h stack.c test.c 题目链接 232. 用栈实现队列 - 力扣(LeetCode) 图解思路 整体结构 实现过程 入队列 插入数据时,插入到ist。…

拦截器Interceptor

概念:是一种动态拦截方法调用的机制,类似于过滤器。Spring框架中提供的,用来动态拦截方法的执行。 作用:拦截请求,在指定的方法调用前后,根据业务需要执行预先设定的代码。

C++实现自动生成c++类中的属性的get和set方法

目录 应用场景 运行准备 代码展示 结果显示 应用场景 当我们在编写类的属性时,需要对该属性进行封装,需要一系列的get和set的方法。例如下面是天气类的成员属性。可以看到属性很多,而写get和set都是一些固定的操作,因此可以直…

stata17中java installation not found或java not recognozed的问题

此问题在于stata不知道去哪里找java,因此需要手动的告诉他 方法1: 1.你得保证已经安装并配置好java环境 2.在stata中输入以下内容并重启stata即可 set java_home "D:\Develope\JDk17" 其中java_home后面的""里面的内容是你的jdk安装路径 我的…

由 Vault 支持的 KES 的 MinIO Operator

为了提供安全锁定和擦除的合规性功能,MinIO 使用服务器端加密 (SSE) 在存储层加密对象,以保护对象作为写入操作的一部分。MinIO 以极高的效率做到这一点——基准测试表明 MinIO 能够以接近线速进行加密/解密。 MinIO 使用的秘诀是…

Linux htop命令使用

文章目录 简介界面介绍第一行第二行第三行第四行 如何使用 简介 htop 是一个类似于 top 的命令,但具有更丰富的功能和更友好的界面。它可以实时显示系统中各个进程的资源占用情况,如 CPU 使用率、内存使用率等。以下是对 htop 命令的完全解析&#xff1…

vscode插件path-intellisense失效原因

很可能是因为设置中的自动补全部分除了问题。 问题 作者自身是因为使用了copilot之后,感觉vscod自带的自动补全(设置里面叫"建议",或者inttelisense)就没必要了,然后一通改设置把建议关掉之后发现插件path-intellisense也不能用了…

【C语言】函数指针数组和指向函数指针数组的指针

1 函数指针数组 数组是一个存放相同类型数据的存储空间,那我们已经学习了指针数组。 比如: int *arr[10];//数组的每个元素是int* 那要把函数的地址存到一个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢&am…

【经验分享】RT600 serial boot mode测试

【经验分享】RT600 serial boot mode测试 一, 文档描述二, Serial boot mode测试2.1 evkmimxrt685_gpio_led_output 工程测试2.2 evkmimxrt685_dsp_hello_world_usart_cm33工程测试 一, 文档描述 RT600的启动模式共支持4种: 1&am…

svm和决策树基本知识以及模型评价以及模型保存

svm和决策树基本知识以及模型评价以及模型保存 文章目录 一、SVM1.1,常用属性函数 二、决策树2.1,常用属性函数2.2,决策树可视化2.3,决策树解释 3,模型评价3.1,方面一(评价指标)3.2&…

MatLab手把手搭建FOC控制环路(全部使用matlab自带模块)

MatLab手把手搭建FOC控制环路(全部使用matlab自带模块) Matlab添加模块只需要在空白处双击鼠标左键,输入模块的名字。 添加PMSM模块: Permanent Magnet Synchronous Machine 参数选择: 添加逆变器Two-Level Conver…

Apple - Cryptographic Services Guide

本文翻译自:Cryptographic Services Guide(更新时间:2018-06-04 https://developer.apple.com/library/archive/documentation/Security/Conceptual/cryptoservices/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011172 文章目录…

python字符串如何删除后几位

1、首先在jupyter notebook中新建一个空白的python文件: 2、然后定义一个字符串,用字符串截取的方式打印出排除最后三个字符的结果,这里的“s[:-3]”的意思就是从字符串取第0个字符至倒数第三个字符的前一个字符,这样就截取了最后…

别再滥用std::async了,strace命令暴露了一个乱开线程问题

用strace查看进程的系统调用后,发现一个std::async滥用问题 问题现象 进程的系统调用clone次数持续增加 使用工具strace发现进程clone系统调用过多且一直在增加 strace -c -p PID问题分析 clone在做什么:创建进程(线程) 查看…

基于Redis和openresty实现高并发缓存架构

目录 概述缓存架构设计实践代码路由业务封装redis 效果 概述 本文是对项目中 QPS 高并发相关问题的一种解决方案,利用 Nginx 与 Redis 的高并发、超低延迟响应,结合 Canal 进行实现。 openrestry官网 当程序需要提供较高的并发访问时,往往需…

算出未来——2024年,计算机相关专业仍是热门

随着高考结束,数百万考生和家长们开始着手专业选择与志愿填报。 选择大学专业不仅关乎未来四年的学习生涯,更可能决定一个人一生的职业方向和人生轨迹。 在众多专业中,计算机相关专业因其广泛的就业前景和不断变化的行业需求,一…

tauri中从前端ts调用rust函数,并异步收到响应结果

在前端是可以异步调用rust代码的,而且还是挺简单的逻辑,一共就三步:定义rust函数,注入到invoke_handler中,在前端调用。有英文能力的可以看官方文档:Calling Rust from the frontend | Tauri Apps 没有英文…

C++拷贝构造函数、运算符重载函数、赋值运算符重载函数、前置++和后置++重载等的介绍

文章目录 前言一、拷贝构造函数1. 概念2. 特征3. 编译器生成默认拷贝构造函数4. 拷贝构造函数典型使用场景 二、运算符重载函数三、赋值运算符重载函数1. 赋值运算符重载格式2. 赋值运算符只能重载成类的成员函数不能重载成全局函数3.编译器生成一个默认赋值运算符重载 四、前置…

WebSocket走私实践(附赠LiveGBS监控系统未授权管理员密码重置)

WebSocket走私实践(附赠LiveGBS监控系统未授权管理员密码重置) 对此,我特别感谢TryHackMe和HackTheBox academy,永远相信和追随英国TryHackMe所教导的网络安全知识,并保持学习 WebSocket走私相关的知识在这里 前段时间学习过htt…