Hampel滤波器是一种基于中位数的离群值检测方法【异常值检测方法】

Hampel滤波器是一种基于中位数的离群值检测方法,也是一种线性滤波器,由德国数学家和统计学家John Hampel在1974年提出。它主要用于去除信号中的脉冲噪声,具有很强的抗干扰能力,因此被广泛应用于信号处理、通信系统等领域。

1.基本原理

Hampel滤波器的基本原理是对于需要滤波的数据Xs,选择一个长度为2k+1的窗口,通过中值数绝对偏差(MAD)来判定Xs的有效性。如果数据被判定为有效,则输出Xs;如果数据被判定为奇异数据(即离群值),则用窗口中值取代Xs。在实际使用中,对于一组待测数据,应从第一个数X1开始,向前补齐k个0,然后对第一个数X1和左右各k个数执行Hampel滤波,随后窗口依次向后滑动。
这种滤波器能够有效地消除数据中存在的离群值,这些离群值可能是由于数据损坏、错误或真实数据的异常情况导致的。无论原因如何,离群值都会对数据分析和建模产生负面影响。因此,Hampel滤波器在数据预处理阶段起着非常重要的作用。

总的来说,Hampel滤波器是一种有效的信号处理工具,它可以帮助我们识别和去除数据中的噪声和异常值,从而提高数据的质量和可靠性。

2.应用领域

Hampel滤波器在许多领域都有应用,包括但不限于以下方面:

  • 信号处理:Hampel滤波器可以用于去除信号中的脉冲噪声和降低随机噪声,因此它在信号处理领域中得到了广泛应用。例如,在音频信号处理中,Hampel滤波器可以用于消除语音信号中的噪声,提高语音识别的准确率。
  • 图像处理:在图像处理中,Hampel滤波器可用于去除图像中的椒盐噪声等。通过对图像进行平滑处理,可以减少图像中的细节部分,从而达到去除噪声的效果。
  • 金融领域:在金融领域中,Hampel滤波器可以用于检测和去除市场数据中的异常值,从而得到更加准确的市场走势分析结果。此外,它还可以用于检测股票价格中的异常波动,帮助投资者做出更加明智的投资决策。
  • 医学领域:在医学领域中,Hampel滤波器可以用于消除医学图像中的噪声,从而提高医学诊断的准确率。例如,在脑部成像中,Hampel滤波器可以帮助医生更好地观察脑部结构,从而更好地诊断某些神经系统疾病。
  • 统计学:在统计学中,Hampel滤波器是一种用于检测和处理时间序列数据中异常值的稳健方法。它基于中值绝对偏差(MAD)并采用滚动窗口来识别异常值,因此对于异常值的检测具有较好的稳健性。
    总之,Hampel滤波器在许多领域中都有应用,特别是在需要去除噪声、检测异常值和进行数据预处理的领域中更是如此。

除了之前提到的信号处理、图像处理和金融领域,Hampel滤波器还在以下领域有应用:

  • 通信系统:在通信系统中,Hampel滤波器被广泛用于去除信号传输过程中产生的噪声,提高信号的质量和可靠性。这对于确保信息的准确传输至关重要。
  • 地震数据分析:在地震学研究中,地震数据常常受到各种噪声的干扰,如仪器噪声、环境噪声等。Hampel滤波器可以有效地去除这些噪声,提高地震数据的信噪比,从而更准确地分析地震事件。
  • 传感器数据处理:传感器在采集数据时往往会受到各种干扰,导致数据中存在大量噪声。Hampel滤波器可以对传感器数据进行滤波处理,去除噪声,提取有用的信息。
  • 工业自动化:在工业自动化领域,各种传感器和执行器产生的信号往往需要进行处理和分析。Hampel滤波器可以用于去除这些信号中的噪声和干扰,提高控制系统的稳定性和可靠性。
    总的来说,Hampel滤波器是一种功能强大的信号处理工具,在多个领域都有广泛的应用。它的主要作用是去除数据中的噪声和干扰,提高数据的质量和可靠性,为各种应用提供准确、可靠的数据支持。

3.实现步骤

汉普尔(Hampel)滤波器是一种非常有效的用于抑制异常值的方法,特别适用于时间序列数据。它是基于统计学的,旨在保留数据的中心趋势和分布结构,同时减少噪声和异常值的影响。

Hampel滤波器的基本原理可以通过以下步骤描述:

中位数:对于每个数据点,计算其在一个固定大小窗口内的中位数。这个窗口通常是对称的,包括当前观测值的前后观测值。

绝对偏差:对于窗口内的每个数据点,计算其与中位数的绝对偏差。

中位数绝对偏差(MAD):计算窗口内所有绝对偏差的中位数。MAD是衡量数据变异性的一种鲁棒方法。

阈值:定义一个阈值,通常是MAD的某个倍数(例如2.5倍或3倍)。这个阈值用于确定数据点是否是异常值。

滤波:对于每个数据点,如果其绝对偏差超过阈值(即被认为是异常值),则用窗口内的中位数替换它;否则,保留原始值。

在数学上,Hampel滤波器可以表示为以下伪代码:

对于每个数据点 x[i]:
    计算窗口 W 中 x[i] 的中位数 med
    对于窗口 W 内的每个点 x[j]:
        计算绝对偏差 |x[j] - med|
    计算窗口 W 内所有绝对偏差的中位数 MAD
    如果 |x[i] - med| > k * MAD (k 是预定义的常数):
        x[i] = med
    否则:
        x[i] = x[i]

这种方法的优点是它对异常值非常敏感,同时保持对数据的非破坏性处理,特别适用于具有偶然异常值的时间序列数据。

4.挑战困难

在实现汉普尔(Hampel)滤波器时,各个步骤的难易程度可能因实现环境(如编程语言)和数据集的特性而异。然而,一般来说,以下几个步骤可能会相对比较难实现:

  • 高效计算滑动窗口中的中位数:对于每个数据点,需要计算包含该点的固定大小窗口内的中位数。对于大数据集或实时处理场景,这可能是一个挑战,因为需要频繁地更新窗口并计算中位数。使用普通的排序方法可能会导致效率低下,因此可能需要使用更高效的算法,如使用堆(heap)或双端队列(deque)来优化。

  • 处理大数据集时的内存管理:如果数据集非常大,那么在内存中存储整个数据集和计算所需的额外结构(如窗口内的数据点)可能会成为问题。在这种情况下,需要有效地管理内存,可能需要使用流处理或分块处理技术。

  • 确定合适的窗口大小和阈值:选择合适的窗口大小和阈值(即MAD的倍数)对于滤波器的性能至关重要。这通常需要对数据进行初步分析,可能涉及调优和实验,以找到最佳的参数。

  • 实现鲁棒性:确保实现对不同类型的数据(如具有不同分布特征的数据)都能保持良好性能。这可能需要考虑如何处理边缘情况,例如数据中的空值或极端值。

  • 优化性能:对于实时应用或处理非常大的数据集,性能优化尤为重要。这可能包括并行处理、优化数据结构选择等。

总体来说,虽然Hampel滤波器的概念理解起来不难,但要实现一个既快速又鲁棒的滤波器,需要考虑和解决上述方面的挑战。

5.相似方法

Hampel滤波器是一种用于消除或减少数据中异常值影响的方法,尤其适用于时间序列数据。与Hampel滤波器相似的其他方法或模型主要包括以下几种:

1. 中位数滤波器(Median Filter)
优点:
简单易实现,计算效率高。
对于短时突发的噪声非常有效。
不依赖于数据的分布,适用于各种类型的数据。
缺点:
对于数据中的连续异常值处理效果不佳。
可能会改变数据的边缘信息,对信号的细节保持不足。
2. 均值滤波器(Mean Filter)
优点:
实现简单,计算成本低。
在消除随机噪声方面效果良好。
缺点:
对异常值敏感,容易受到极端值的影响。
可能会模糊数据中的重要特征。
3. 带限制的线性回归(Robust Linear Regression)
优点:
能够处理线性关系中的异常值。
提供了对数据的统计解释。
缺点:
实现相对复杂。
对非线性数据处理效果有限。
4. 鲁棒主成分分析(Robust PCA)
优点:
能够有效处理高维数据中的异常值。
可以用于数据降维,发现潜在的数据结构。
缺点:
算法复杂度较高,对计算资源要求较大。
实现相对复杂,参数调整需要专业知识。
5. 异常值检测算法(如Isolation Forest, DBSCAN)
优点:
可以识别和隔离异常值,适用于多种类型的数据。
特别适合于大数据环境。
缺点:
参数选择对结果影响较大,需要根据具体数据调整。
对于某些数据类型可能不那么有效。
6. 波形变换(如小波变换)
优点:
能够同时在时间和频率域进行分析,适用于非平稳信号的噪声消除。
适合处理信号中的瞬时异常值。
缺点:
实现相对复杂。
对参数选择敏感,需要专业知识。
7. Kalman滤波器
优点:
在线性系统和高斯噪声假设下非常有效。
适用于实时数据处理和预测。
缺点:
对非线性系统和非高斯噪声处理效果有限。
实现和调参相对复杂。
每种方法都有其特定的应用场景和优势。选择哪种方法取决于数据的特性、所需处理的问题类型以及可接受的计算复杂度。通常,为了获得最佳效果,可能需要结合使用多种方法。

6.给个例子

在统计学中,Hampel滤波器常被用于处理包含异常值的时间序列数据。下面我将详细介绍一个Hampel滤波器在气象学领域的成功应用案例,该案例涉及到对气温数据的处理和异常值检测。

案例背景

假设我们有一组长时间序列的气温数据,这些数据可能来自一个自动气象站,每天记录多次气温读数。这些数据对于分析气候变化、季节性趋势和异常天气事件非常重要。然而,由于传感器故障、数据传输错误或其他原因,数据中可能包含一些异常值(也称为离群点),这些异常值会严重影响数据分析的准确性。

Hampel滤波器的应用

在这种情况下,我们可以使用Hampel滤波器来检测和修正这些异常值。Hampel滤波器是一种基于滑动窗口和中位数绝对偏差(MAD)的稳健统计方法,它能够在保留数据基本特征的同时,有效地识别和去除异常值。

步骤详解:
  • 数据准备:首先,我们需要收集并整理气温数据,确保数据按照时间顺序排列,并处理任何明显的数据缺失或格式问题。
  • 参数设置:接下来,我们需要为Hampel滤波器设置一些参数,包括滑动窗口的大小和阈值。窗口大小决定了用于计算中位数和MAD的数据点的数量,而阈值则用于确定哪些数据点被视为异常值。
  • 异常值检测:对于数据中的每个点,Hampel滤波器会考虑其周围窗口内的数据点,并计算这些点的中位数和MAD。然后,它会比较当前点与中位数的差值与MAD的倍数(通常是一个预设的常数倍,如3倍或5倍),如果差值超过这个阈值,则当前点被视为异常值。
  • 数据修正:对于检测到的异常值,有几种处理方式。一种常见的做法是将异常值替换为滑动窗口中的中位数,这样可以保持数据的时间连续性和趋势一致性。另一种做法是简单地将异常值排除在分析之外。
  • 结果分析:最后,我们可以对处理后的数据进行进一步的分析,如计算平均值、标准差、绘制时间序列图等,以揭示气温的季节性变化、长期趋势或其他有趣的特征。
    成功之处
    在这个案例中,Hampel滤波器的成功之处在于它能够在不改变数据整体分布的情况下有效地去除异常值。通过消除这些离群点对统计分析的干扰,我们能够获得更加准确和可靠的结果。此外,Hampel滤波器对于不同类型的异常值(如单点异常或连续异常)都具有较好的稳健性,这使得它在处理复杂和多变的气象数据时非常有用。

7.实现依托

编程语言即可

下面给出python代码:

import matplotlib.pyplot as plt
import numpy as np

# 设置中文字体
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.rcParams['axes.unicode_minus'] = False

# 生成包含异常值的正弦波数据
def generate_data_with_outliers():
    time = np.linspace(0, 10, 100)
    signal = np.sin(time) + np.random.normal(0, 0.1, 100)

    # 添加异常值
    outliers_indices = [20, 40, 60, 80]
    outliers_values = [2.0, -1.9, 2.1, -0.5]
    
    for index, value in zip(outliers_indices, outliers_values):
        signal[index] = value

    return time, signal

# 生成包含异常值的数据
time, data = generate_data_with_outliers()

# 获取异常值的索引和数值
outliers_indices = [20, 40, 60, 80]
outliers_values = [data[i] for i in outliers_indices]

# 绘制原始数据
plt.figure(figsize=(10, 6))
plt.plot(time, data, label='原始数据')

# 仅将异常值标红
plt.scatter(time[outliers_indices], outliers_values, c='red', marker='o', label='异常值', s=50)

plt.title('带有异常值的原始数据')
plt.legend()
plt.show()
def hampel(vals_orig, k=7, t0=3):
    """
    使用Hampel滤波器去除时间序列中的异常值。

    参数:
        - vals_orig: numpy数组,原始时间序列数据
        - k: 整数,滤波器窗口的大小(半窗口大小为k/2)
        - t0: 浮点数,用于异常值检测的阈值

    返回:
        - vals_filt: numpy数组,经过滤波的时间序列数据
        - outliers_indices: list,异常值的索引列表
    """
    # 创建输入数据的副本
    vals_filt = np.copy(vals_orig)
    outliers_indices = []

    # 定义Hampel滤波器函数
    n = len(vals_orig)

    for i in range(k, n - k):
        # 提取窗口
        window = vals_orig[i - k:i + k + 1]

        # 计算中值和中值绝对偏差(MAD)
        median = np.median(window)
        mad = np.median(np.abs(window - median))

        # 检查当前值是否为异常值
        if np.abs(vals_orig[i] - median) > t0 * mad:
            # 用中值替换异常值
            vals_filt[i] = median
            # 记录异常值的索引
            outliers_indices.append(i)

    return vals_filt, outliers_indices
# 对数据应用Hampel滤波器
filtered_data, outliers_indices = hampel(data)

# 绘制原始数据和滤波后的数据
plt.figure(figsize=(10, 6))
plt.plot(time, data, label='原始数据')
plt.scatter(time[outliers_indices], data[outliers_indices], c='red', marker='o', label='异常值', s=50)
plt.plot(time, filtered_data, label='滤波后数据', linestyle='--', color='red')
plt.fill_between(time, filtered_data, data, color='red', alpha=0.2, label='异常值区域')
plt.title('使用Hampel滤波器去除异常值')
plt.grid(True)
plt.legend()
plt.show()

# 打印异常值的索引
print("异常值的索引:", outliers_indices)

自写代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

def hampel_filter_for_series(s, window_size, n_sigmas=3):
    # Hampel Filter function
    rolling_median = s.rolling(window=2*window_size, center=True).median()
    MAD = lambda x: np.median(np.abs(x - np.median(x)))
    rolling_mad = s.rolling(window=2*window_size, center=True).apply(MAD, raw=True)
    threshold = n_sigmas * rolling_mad
    outliers = np.abs(s - rolling_median) > threshold
    s_filtered = s.copy()
    s_filtered[outliers] = rolling_median[outliers]
    return s_filtered

# Example data
data = pd.Series([1, 2, 2, 2, 3, 4, 10, 6, 2, 3, 4, 5])

# Apply Hampel filter
filtered_data = hampel_filter_for_series(data, window_size=3)

# Plotting
plt.figure(figsize=(10, 6))
plt.plot(data, 'b-', label='Original Data')
plt.plot(filtered_data, 'r-', label='Filtered Data')
plt.scatter(data.index, data, c='blue', label='Original Data Points')
plt.scatter(filtered_data.index, filtered_data, c='red', label='Filtered Data Points')
plt.title('Hampel Filter - Before and After')
plt.xlabel('Index')
plt.ylabel('Value')
plt.legend()
plt.show()

在这里插入图片描述

8.方法局限

Hampel滤波器,尽管在处理异常值方面非常有效,但它也有一些局限性和考虑因素:

  • 窗口大小的选择:窗口大小的选择对Hampel滤波器的效果有重要影响。如果窗口太小,可能无法充分捕捉数据的局部特征;如果窗口太大,可能会导致过度平滑,从而失去重要的信号细节。合适的窗口大小通常取决于数据的具体特性和应用场景。

  • 处理连续异常值的能力有限:Hampel滤波器在处理个别离群点方面表现出色,但如果数据中存在连续的异常值或异常区域,它的效果就会降低。在这些情况下,异常值可能会影响滚动窗口中的中位数和MAD计算,导致滤波器性能下降。

  • 对非静态数据的适应性:对于非静态或非平稳时间序列数据,Hampel滤波器可能不足以适应数据的动态变化。例如,在趋势或季节性强烈的数据中,Hampel滤波器可能会错误地将正常的波动视为异常值。

  • 参数调整:除了窗口大小外,阈值的选择(通常是基于MAD的倍数)也很重要。不同的阈值设置会导致不同程度的敏感性对待异常值。这需要针对特定数据进行调整,可能需要一定的实验和专业判断。

  • 计算复杂性:对于大型数据集,Hampel滤波器的计算可能会变得较为复杂和耗时,特别是在需要频繁计算滚动窗口的中位数和MAD时。

  • 非参数方法的局限性:作为一种非参数方法,Hampel滤波器不依赖于数据分布的假设,这在某些情况下是一个优势。然而,这也意味着它不提供数据的统计模型,可能无法捕获数据中的一些重要统计特性。

  • 无法处理复杂噪声模式:Hampel滤波器主要用于识别和处理异常值,但对于更复杂的噪声模式(如高频噪声、白噪声等),它可能不足够有效。

总结来说,虽然Hampel滤波器在许多应用中非常有用,但它并不是万能的。在使用时需要考虑数据的特性和应用场景,合理选择窗口大小和阈值,有时甚至需要结合其他方法来达到最佳效果。

9.方法展望

如果你考虑对Hampel滤波器进行研究,并希望对其进行拓展或改进,以下是一些可能的研究方向:

  • 自适应窗口大小:研究一种机制,使窗口大小能够根据数据的局部特性自动调整。这可能涉及到开发算法来识别数据的局部变化率或波动性,并据此调整窗口大小。

  • 多维和复杂数据类型处理:扩展Hampel滤波器,使其能够有效处理多维数据,例如在图像处理或多变量时间序列中的应用。这可能涉及考虑数据之间的相关性和结构化信息。

  • 结合其他异常检测方法:将Hampel滤波器与其他统计或机器学习方法结合,以提高对连续异常值或复杂噪声模式的处理能力。例如,可以考虑与机器学习模型结合,以更好地适应数据的特性。

  • 实时数据流处理:对Hampel滤波器进行优化,使其适用于实时数据流和大规模数据集的处理。这可能包括算法优化、并行计算和数据流处理技术的应用。

  • 参数自动调整机制:研究一种机制,用于自动确定最优的阈值和其他参数设置,以减少人工干预并提高滤波器的适用性和效果。

  • 异常值的分类和解释:在识别异常值的基础上,进一步研究如何对这些异常值进行分类和解释,以提供更多的上下文信息和洞见。

  • 鲁棒性和稳健性分析:深入分析Hampel滤波器在不同条件下的鲁棒性和稳健性,包括不同的噪声类型、数据分布和异常模式。

  • 应用研究:将Hampel滤波器应用于特定领域,如金融时间序列分析、生物信号处理、工业系统监控等,研究其在特定应用中的表现和优化方法。

  • 理论基础研究:探究Hampel滤波器的理论基础,包括其统计属性、极限行为和效率分析,以更深入地理解其工作原理和局限性。

  • 与深度学习的结合:考虑将Hampel滤波器与深度学习模型结合,研究如何利用深度学习来改进异常值检测的准确性和效率。

通过这些研究方向,可以进一步提升Hampel滤波器的效能,使其更加适应复杂和多样化的数据处理需求。

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

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

相关文章

SpringBoot定时监听RocketMQ的NameServer

问题分析 自己在测试环境部署了RocketMQ,发现namesrv很容易挂掉,于是就想着监控,挂了就发邮件通知。查看了rocketmq-dashboard项目,发现只能监控Broker,遂放弃这一路径。于是就从报错的日志入手,发现最终可…

【Redis-08】Redis主从复制的实现原理

在Redis中,可以通过slaveof命令或者设置slaveof选项实现两台Redis服务器的主从复制,比如我们有两个Redis机器,地址分别是 127.0.0.1:6379 和 127.0.0.1:6380,现在我们在前者上面执行: 127.0.0.1:6379 > SLAVEOF 12…

STC8H系列单片机入门教程之NVC系列语音播报模块(九)

一、模块简述 ● 模组支持3.3V和5V单片机供电系统 ● 标准2.54MM间距排针与外部连接 ● 支持喇叭0.5W/8欧 ● 适合用于超声波距离、电子秤重量、时钟时间、温度、球赛比分等语音播报 二、引脚说明 序号 名称 说明 1 VCC 电源正(3.3V-5V&#…

『精』CSS 小技巧之BEM规范

『精』CSS 小技巧之BEM规范 文章目录 『精』CSS 小技巧之BEM规范一、什么是BEM?二、BEM要怎么用?三、不用BEM会少个胳膊吗?💊四、Sass与BEM的结合🎈五、块与修饰符应放在一块👿参考资料💘推荐博…

Android Matrix画布Canvas旋转Rotate,Kotlin

Android Matrix画布Canvas旋转Rotate,Kotlin private fun f1() {val originBmp BitmapFactory.decodeResource(resources, R.mipmap.pic).copy(Bitmap.Config.ARGB_8888, true)val newBmp Bitmap.createBitmap(originBmp.width, originBmp.height, Bitmap.Config.…

vscode调用HTML文件

vscode实现对HTML文件调用 创建html文件下载拓展内容点击拓展查找需要的拓展 导入html代码设置默认打开浏览器运行结果参考文献 做数据库课设的内容,尝试一些自己没有接触过的东西,了解如何创建一个网站以及数据库的一个应用 创建html文件 创建一个html的文件,加入后缀名 下…

docker搭建minio集群,集群分享文件URL踩坑问题

一、环境准备 3台机器,Ip地址依次为IP1,IP2,IP3二、设置服务器时间同步 Minio集群需要各个节点的时间保持同步,使用NTP作为时间同步服务,这里以Minio-1(IP1)为上游服务器,其它2个节点为下游服务器&#x…

HarmonyOS 组件通用属性之通用事件 文档参数讲解(点击事件)

我们组件中 会有很多通用的信息和方法 那么 首先 我们看通用事件 通用事件中 最常用的就是我们的点击事件 比如说 我们之前常写的 组件.onClick(()>{//事件逻辑 })但是 我们之前 都没有用它接参数 我们可以这样 Button("跳转").onClick((ewat: ClickEvent)>…

Matplotlib_艺术画笔见乾坤

文章目录 一、概述:1.matplotlib的三层api2.Artist的分类3.matplotlib标准用法 二、自定义你的Artist对象1.Artist属性 在图形中的每一个元素都对应着一个matplotlib Artist,且都有其对应的配置属性列表。2.属性调用方式 三、基本元素 - primitives1.2DL…

[MySQL] MySQL中的事物

本片文章对MySQL中的事物进行了详解。其中包含了事物的特性、为什么要有事物、查看事物版本支持、事物常见操作、事物的隔离界别等等内容进行详细举例解释。同时还深入讲解了事物的隔离性,模拟实现MVCC多版本并发控制,也讲解了RR和RC的本质区别。希望本篇…

汽车保养软件app开发步骤

“增强您的动力,为您的旅程加油——每一刻都讲述着关爱的故事。构建汽车维护软件app,为您的车辆提供数字化的维修站,从而开启长寿之路。智能驾驶、互联驾驶、自信驾驶。” 疯狂地搜索旧收据并猜测上次换油时间的日子已经一去不复返了。如果您…

LINUX 抓包工具Tcpdump离线安装教程

本次教程基于内网环境无法访问网络使用安装包进行安装抓包工具 1、首先给大家看下一共有6个安装包,依次进行解压,包我就放到csdn上了,需要的可以联系我进行下载 2打包然后传到服务器任意一个目录下,进入到当前目录,然后…

Maven下载和安装的详细教程

文章目录 一、Maven下载和安装1.1 下载 Maven1.2 配置环境变量 参考资料 一、Maven下载和安装 1.1 下载 Maven 打开 Maven 的官方网站Maven – Download Apache Maven,下载最新版本的 Maven 在可选择的版本中,不同版本的区别在于: binary是已经编译过的…

【网络面试(2)】DNS原理-域名和IP地址的查询转换

从上一篇博客我们得知浏览器是如何生成了HTTP消息了,但是浏览器作为应用程序,是不具备向网络中发送请求的能力,而是需要委托给操作系统的内核协议栈来发送请求。在委托协议栈之前,浏览器还要做的一件事情就是将域名转换为IP地址。…

Pytest 项目结合Jenkins

一、window安装centos7虚拟机 参考网上其他教程 二、Linux安装Jenkins 进入jenkins.io网址,点击download,选择CentOS版本 1、Linux中安装java环境和git Jenkins的运行需要java环境;安装git是为代码上传给仓库做准备; yum - y…

AI与数字化映像:颜值开端,功能至上_光点科技

在人工智能的浪潮中,AI数字人的兴起正成为一个不可忽视的现象。随着ChatGPT等生成式AI算法的进步,AIGC(人工智能生成内容)的应用呈现出爆发性增长,不仅在技术圈引起广泛关注,也为元宇宙及其相关产业链带来了…

读算法霸权笔记08_反馈

1. 关开门 1.1. clopening 1.2. 指的是一个职员工作到很晚,关闭门店或者咖啡店,几小时后又在天亮之前回来开门 1.3. 极度不规律的工作时间安排越来越常见 1.3.1. 首当其冲的是星巴克、麦当劳和沃尔玛等企业的低薪职工 1.3.2. 不规律的工作时间安排是…

大一c语言期末复习题

第16题&#xff1a; 答案&#xff1a; #include<stdio.h> void hello_world(void) {printf("Hello,world!\n"); } void three_hellos(void) {int i 0;for (i 0; i < 3; i) //调用3次函数{hello_world();} } int main() {three_hellos();return 0; } 知…

Self-attention学习笔记(Self Attention、multi-head self attention)

李宏毅机器学习Transformer Self Attention学习笔记记录一下几个方面的内容 1、Self Attention解决了什么问题2、Self Attention 的实现方法以及网络结构Multi-head Self Attentionpositional encoding 3、Self Attention 方法的应用4、Self Attention 与CNN以及RNN对比 1、Se…

【Java开发岗面试】八股文—Java基础集合多线程

声明&#xff1a; 背景&#xff1a;本人为24届双非硕校招生&#xff0c;已经完整经历了一次秋招&#xff0c;拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验&#xff08;主要是校招&#xff09;&#xff0c;包括我自己总结的八股文、算法、项目介绍、HR面和面试…