超级干货 !数据平滑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 scipyimport 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小白必备手册
在这里插入图片描述

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux驱动开发笔记(十一)tty子系统及其驱动

文章目录 前言一、串口驱动框架1.1 核心数据结构1.2 数据处理流程 二、驱动编写1. 设备树的修改2. 相关API函数3. 驱动框架4. 具体功能的实现4.1 出入口函数的编写4.2 读写函数 前言 之前已经讲过应用层的应用,接下来我们继续进行驱动的学习。其实实际上我们很少主动…

Android记录22-关于开发中账号绑定的逻辑处理

有绑定的状态,自然也有取消绑定的状态: 这里的取消绑定只是简单改变应用内的一个状态罢了,并不会跟我们的服务端交互,也不会影响我们的账号登录的状态。 说了这么多,也没看见代码,你们会不会打我&#xff…

vs工程添加属性表

一、简介 1、 vs工程属性表以(.props)为后缀 2、 作用:当多个工程需要配置很多相同的属性配置时方便同步,比如多个工程需要链接相同的头文件,库文件,输出路径,中间目录等 3、本章内容测试环境&a…

天马学航——智慧教务系统(移动端)开发日志三

天马学航——智慧教务系统(移动端)开发日志三 日志摘要:更新了学生选课模块、我的课程模块以及退课的功能,优化了后端数据库的缓存 1、学生选课模块 学生选课模块主要实现,学生根据需求进行选课操作,通过后端查询到所有教师的课…

Java学习 - 网络IP地址与子网划分 讲解

IP地址 作用 用于决定数据包最终到达哪个计算机 组成 由32位比特组成,即4个字节这32位可以分为两个部分,称为网络号和主机号同一网段的计算机网络号相同,路由器负责连接不同的网段,而交换机负责连接同一网段中不同的计算机同一…

如何将 ChatGPT 集成到你的应用中

在当今快速发展的技术环境中,将人工智能聊天解决方案集成到你的应用程序中可以显著提升用户体验和参与度。OpenAI 的 ChatGPT 以其对话能力和高级语言理解而闻名,对于希望在其应用程序中实现智能聊天功能的开发人员来说是一个绝佳的选择。那我们今天就来…

高性能并行计算华为云实验一:MPI矩阵运算

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建矩阵乘法源码 3.1.1 实验说明 3.1.2 实验步骤 3.2 创建卷积和池化操作源码 3.2.1 实验说明 3.2.2 实验步骤 3.3 创建Makefile文件并完成编译 3.4 建立主机配置文件与运行监测 四、实验结果与分析 4.1 矩阵乘法…

压缩包文件密码破解软件 Ziperello 下载及使用教程

使用 Ziperello https://qweree.cn/index.php/416/ 对加了密码的压缩包进行密码破解,教程如下: 第一步,双击运行 Ziperello双击我打开程序.exe,如下图: 第二步,打开一个加了密的 ZIP 压缩包,再…

什么概率密度函数?

首先我们来理解一下什么是连续的随机变量,在此之前,我们要先理解什么是随机变量。所谓随机变量就是在一次随机实验中一组可能的值。比如说抛硬币,我们设正面100,反面200,设随机变量为X,那么X{100,200}。 X是…

STM32学习笔记(十)--I2C、IIC总线协议详解

概述:Inter Integrated Circuit,一组多从 多组多从 有应答 是一种同步(具有时钟线需要同步时钟SCL)、串行(一位一位的往一个方向发送)、半双工(发送接收存在一种)通信总线。 &…

【调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法】

调试笔记-系列文章目录 调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 文章目录 调试笔记-系列文章目录调试笔记-20240618-Windows-pnpm 更新出现 Cannot find module 问题的解决方法 前言一、调试环境操作系统:Windows 10 专业版调…

qmt量化交易策略小白学习笔记第46期【qmt编程之期货行情数据--如何获取5档盘口行情、期货结算价与持仓量】

qmt编程之获取期货数据 qmt更加详细的教程方法,会持续慢慢梳理。 也可找寻博主的历史文章,搜索关键词查看解决方案 ! 感谢关注,咨询免费开通量化回测与获取实盘权限,欢迎和博主联系! 获取5档盘口行情 …

GeoJson 地图地理信息数据获取

效果图: 获取渠道: 通过阿里数据可视化平台获取通过Vector Maps获取通过geojson来获取 1、通过阿里数据可视化平台获取 2、通过Vector Maps获取 3、通过geojson获取

数据通信与网络(五)

交换机功能: 地址学习(端口/MAC地址映射表) 通信过滤(基于端口/MAC地址映射表) 生成树协议(断开环路) 隔离冲突域 生成树协议 隔离冲突域 交换机配置模式(用不同级别的命令对交换机进行配置) 普…

如何一步一步将Python中的应用打包成安卓的APK安装包文件

一、首先,按照如下链接操作 Python 应用打包成 APK【全流程】_python打包成apk-CSDN博客 二、运行 buildozer init会报错buildozer命令找不到,明明已经安装 解决方法: 这里重新创建一个conda环境 Installation — Buildozer 0.11 docum…

Oracle基本语法(SQLPlus)

目录: 前言: 准备工作: 登录: 1.打开SQL Plus命令行工具 第一种方式: 第二种方式: 2.以不同用户登录 SYSTEM(普通管理员): SYS(超级管理员): 不显示…

408计算机组成原理

todo:有逻辑的分门别类的整理笔记,方便复习 总 理解不了就直接背下来,学越多就越能理解 计算机系统概述 简要目录 基本概念 字长 MAR MDR PC IR CU ALU 通用寄存器、标志寄存器、标志控制器 ACC 地址译码器 通用寄存器 PU C语言编译过程 数据通路带…

DAY10-力扣刷题

1.最后一个单词的长度(简单) 58. 最后一个单词的长度 - 力扣(LeetCode) 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子…

Unity3d自定义TCP消息替代UNet实现网络连接

以前使用UNet实现网络连接,Unity2018以后被弃用了。要将以前的老程序升到高版本,最开始打算使用Mirro,结果发现并不好用。那就只能自己写连接了。 1.TCP消息结构 (1). TCP消息是按流传输的,会发生粘包。那么在发射和接收消息时就需要对消息进行打包和解包。如果接收的消息…

Nutch爬虫在大数据采集中的应用案例

引言 在当今信息爆炸的时代,大数据的价值日益凸显。网络作为信息的海洋,蕴藏着丰富的数据资源。Nutch,作为一个开源的Java编写的网络爬虫框架,以其高效的数据采集能力和良好的可扩展性,成为大数据采集的重要工具。本文…