自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 收藏
  • 关注

原创 高级字符串算法

编辑距离(Edit Distance),也称Levenshtein距离,是指将一个字符串转换为另一个字符串所需的最少编辑操作次数。编辑操作包括插入、删除和替换。

2024-08-31 10:37:34 903

原创 字符串压缩算法

字符串压缩算法用于减少字符串的存储空间,尤其是在需要传输或保存大量文本数据时。以下是三种常见的字符串压缩算法:RLE、Huffman编码和LZW压缩。

2024-08-26 22:15:11 1403

原创 leetcode 1004.最大连续1的个数 Ⅲ

Python的collections库是一个内建模块,它提供了一系列特殊的容器数据类型,用于扩展Python的标准内建容器(如字典、列表、集合和元组)。这些特殊的容器类型提供了比通用数据类型更多的选择和更好的性能,非常适合在需要高效数据处理和复杂数据结构时使用。具体使用详情官方地址。

2024-08-26 19:31:18 919

原创 leetcode 438.找到字符串中所有字母异位词

Python的collections库是一个内建模块,它提供了一系列特殊的容器数据类型,用于扩展Python的标准内建容器(如字典、列表、集合和元组)。这些特殊的容器类型提供了比通用数据类型更多的选择和更好的性能,非常适合在需要高效数据处理和复杂数据结构时使用。具体使用详情官方地址。

2024-08-25 21:25:46 719

原创 leetcode 2134.最少交换次数来组合所有的1 Ⅱ

元素。

2024-08-25 17:05:05 879

原创 字符串排序算法

字符串排序在许多应用场景中至关重要,如字典实现、自动补全、以及文本处理等。以下是几种常见的字符串排序算法。

2024-08-24 17:05:55 543

原创 leetcode 2461.长度为k子数组的最大和

通过移动指针来改变窗口的大小和位置,在窗口移动的过程中,根据问题的需求进行特定的计算和处理。因为 15 是满足全部条件的所有子数组中的最大子数组和,所以返回 15。- [2,9,9] 不满足全部条件,因为元素 9 出现重复。- [9,9,9] 不满足全部条件,因为元素 9 出现重复。- [4,4,4] 不满足全部条件,因为元素 4 出现重复。- [1,5,4] 满足全部条件,和为 10。- [5,4,2] 满足全部条件,和为 11。- [4,2,9] 满足全部条件,和为 15。

2024-08-24 11:20:35 724

原创 剑指offer 30. 包含min函数的栈

通过使用一个辅助栈,我们可以在O(1)时间复杂度内实现对栈的最小值查询。辅助栈的栈顶始终保持当前栈的最小元素,使得min操作能够快速返回栈的最小值。

2024-08-23 14:01:41 451

原创 字符串搜索算法

Trie树,又称前缀树或字典树,是一种树形数据结构,主要用于快速存储和查找字符串的前缀。Trie树中的每个节点代表一个字符,根节点为空,路径上的字符连接表示一个字符串。

2024-08-23 10:55:44 902

原创 leetcode 2379.得到K个黑块的最少涂色次数

滑动窗口是一个在序列上移动的区间,通常由左右两个指针来界定这个区间的范围。通过移动指针来改变窗口的大小和位置,在窗口移动的过程中,根据问题的需求进行特定的计算和处理。一种得到 7 个连续黑色块的方法是把第 0 ,3 和 4 个块涂成黑色。输入:blocks = "WBBWWBBWBW", k = 7。可以证明无法用少于 3 次操作得到 7 个连续的黑块。得到 blocks = "BBBBBBBWBW"。不需要任何操作,因为已经有 2 个连续的黑块。每一次操作中,你可以选择一个白色块将它。

2024-08-22 13:54:43 1075

原创 字符串算法

字符串是由字符组成的有限序列,通常用于表示文本数据。字符串可以用不同的编码方式进行存储和处理,如ASCII和Unicode。

2024-08-22 10:11:20 709

原创 剑指 offer 09.用两个栈实现队列

通过两个栈的相互配合,我们可以实现队列的插入和删除操作,使得时间复杂度达到较优水平。这种设计有效地利用了栈的特性来模拟队列的行为。

2024-08-20 21:13:16 477

原创 TensorFlow 和 PyTorch:用于深度学习和神经网络的库,广泛用于图像识别、自然语言处理等领域。

无论是开发前沿的研究项目,还是部署实际的生产模型,这两个框架都为开发者提供了强大的支持。这两个库都是由世界领先的科技公司开发并开源:TensorFlow 由 Google Brain 团队开发,PyTorch 由 Facebook 的人工智能研究(FAIR)实验室开发。在这个案例中,我们将使用TensorFlow和Keras(TensorFlow的高级API)来构建一个简单的卷积神经网络(CNN),用于MNIST手写数字分类。

2024-08-20 09:46:49 972

原创 Scikit-learn:用于数据挖掘和数据分析的简单而有效的工具,建立在 NumPy, SciPy 和 Matplotlib 上。

它建立在强大的科学计算库之上,包括 NumPy、SciPy 和 Matplotlib,提供了丰富的机器学习算法和工具,如分类、回归、聚类、降维、模型选择和数据预处理等。Scikit-learn 是 Python 生态系统中不可或缺的机器学习库,其易用性、效率和丰富的功能使其成为数据科学和机器学习的首选工具。在接下来的章节中,我们将深入探讨 Scikit-learn 的高级功能和实用技巧,以帮助您更好地理解和应用这一强大的工具库。假设我们有一组客户的购物数据,我们想通过聚类算法将客户分成不同的细分市场。

2024-08-19 15:29:09 1097

原创 Seaborn:基于 Matplotlib 的高级绘图库,提供了更高级的接口来绘制吸引人的统计图形。

相比于 Matplotlib,Seaborn 提供了更高级的接口,简化了绘图过程,同时默认的美观配色和样式使得图形更加吸引人。Seaborn 特别适合用于探索性数据分析和统计建模,其简洁的 API 使用户能够轻松创建复杂的图形,快速洞察数据中的模式、关系和分布。Seaborn 是基于 Matplotlib 的高级绘图库,通过提供更高级的接口和默认美观的样式,使得统计数据的可视化变得简单而直观。Seaborn 的优势在于其简洁的 API、强大的数据集成和丰富的图形类型,特别适合用于探索性数据分析和统计建模。

2024-08-19 11:03:00 1196

原创 Matplotlib:Python 的绘图库,可以生成出版质量级别的图形。

图形样式和主题:Matplotlib提供了一系列预定义的图形样式和主题,可以通过函数快速应用。此外,用户还可以自定义图形的颜色、字体、线型、标记、坐标轴和注释等,使得图形更加符合特定需求。文本与注释:在图形中添加文本和注释是非常常见的需求,Matplotlib通过text和annotate函数提供了灵活的文本添加和注释功能。用户可以精确控制文本的位置、字体大小、颜色和旋转角度等属性。图例与坐标轴:图例和坐标轴是图形的重要组成部分,Matplotlib允许用户通过legend和axis。

2024-08-15 13:51:02 859

原创 SciPy:基于 NumPy 的算法库和数学工具包,用于数学、科学和工程领域。

无论是进行线性代数运算、优化问题求解、积分与微分方程处理,还是进行信号和图像处理,SciPy都提供了高度优化的工具,使得复杂的科学计算任务变得更加简单和高效。SciPy的目标是为用户提供一个全面的科学计算环境,其中涵盖了常见的线性代数、优化、积分、插值、傅里叶变换、信号处理、统计、图像处理、以及ODE(常微分方程)求解等功能。SciPy与NumPy紧密结合,同时也与Pandas、Matplotlib等库有很好的兼容性,这使得它在科学研究、数据分析和工程计算中占据了重要地位。

2024-08-15 09:47:08 1048

原创 图论算法

Dijkstra算法由荷兰计算机科学家Edsger W. Dijkstra在1956年提出,并于1959年发表。这是一个贪心算法,旨在解决图中的单源最短路径问题。它的目标是在给定的图中,找到从一个特定源节点到其他所有节点的最短路径。Dijkstra算法广泛应用于网络路由、地图导航以及其他需要找到最短路径的场景中。Floyd-Warshall算法是一种经典的动态规划算法,用于解决加权图中任意两点之间的最短路径问题。

2024-08-14 13:13:56 1923

原创 Pandas:提供了快速、灵活和表达式丰富的数据结构。

它的快速、灵活和表达式丰富的数据结构,以及强大的数据处理和分析工具,使得Pandas成为了处理结构化数据的事实标准。无论是进行简单的数据清理任务,还是复杂的数据分析和建模,Pandas都能为开发者提供高效且易用的解决方案。掌握Pandas是成为数据科学家和数据分析师的重要一步,它将显著提升数据处理的效率和分析的深度。Pandas的目标是提供快速、灵活和表达式丰富的数据结构,以便于数据的清理、转换、聚合和可视化。函数是进行数据汇总和重新组织的强大工具,类似于Excel中的数据透视表。

2024-08-14 10:05:15 1028

原创 图像压缩算法

JPEG(Joint Photographic Experts Group)压缩是最常用的有损图像压缩算法之一。它通过减少图像中的冗余数据来实现高效压缩,特别适用于自然图像。JPEG压缩通过有损的方式显著减少图像文件大小,适用于对压缩质量要求不高的场景,如照片存储和网页图像加载。无损压缩通过高效编码原理在不丢失任何信息的情况下压缩图像数据。常见的无损压缩格式包括PNG和GIF,适用于需要精确保存图像信息的场景。无损压缩可以在保持图像完整性的同时,减少存储空间,适用于精确度要求高的应用场景。

2024-08-13 13:21:59 1103

原创 图像复原算法

逆滤波是一种基本的图像复原方法,用于从退化图像中恢复原始图像。它通过逆向应用退化过程中的滤波器来恢复图像。逆滤波是一种基本的图像复原方法,适用于已知退化函数且噪声较小的情况,但在高噪声条件下效果不佳。维纳滤波是一种最优复原方法,通过最小化均方误差来恢复被噪声和退化影响的图像。维纳滤波能够在一定程度上抑制噪声,提升复原效果。维纳滤波结合了逆滤波和噪声抑制,适用于含噪声图像的复原,是一种最优的线性复原方法。盲复原是一种高级的图像复原方法,不需要先验知识,可以在不完全知道退化函数的情况下恢复图像。

2024-08-13 09:26:42 931

原创 NumPy:用于大规模数值计算的基础库

NumPy的高效性、灵活性和强大的功能使其成为了数据科学家、机器学习工程师以及任何需要处理大量数值数据的开发者的必备工具。通过深入掌握NumPy的使用,开发者可以极大提升数据处理和分析的效率,为进一步的复杂计算和建模打下坚实的基础。得益于其高效的底层实现,NumPy能够直接操作数组中的数据,无需编写冗长的循环,大幅提升了代码的执行效率。它的诞生填补了Python在处理多维数组和矩阵运算方面的空白,使得Python逐渐成为科学计算和数据分析领域的主流工具之一。每个样本记录了某一天的最高气温和最低气温。

2024-08-12 14:03:25 1015

原创 图像配准算法

基于特征点的配准方法通过检测图像中的特征点并进行匹配,实现图像的对齐。常用的特征点检测算法包括SIFT、SURF和ORB。基于特征点的配准方法通过检测和匹配图像中的关键点,实现图像的对齐,适用于特征明显的图像。基于变换模型的配准方法通过设定图像之间的几何变换模型,并通过优化算法求解变换参数,实现图像的对齐。常用的变换模型包括仿射变换和透视变换。基于变换模型的配准方法通过设定几何变换模型并优化参数,实现图像的对齐,适用于变换类型已知的图像。基于频域的方法通过将图像转换到频率域,并在频率域中进行配准。

2024-08-12 09:54:32 475

原创 图像分割算法

阈值分割是一种简单而有效的图像分割方法,通过设置一个或多个阈值,将图像分割为前景和背景区域。常见的阈值分割方法包括全局阈值、自适应阈值和Otsu阈值。阈值分割通过设定阈值,将图像分割为前景和背景,是一种简单而有效的图像分割方法,适用于对比度高的图像。K-means聚类是一种无监督学习算法,用于将图像像素分为K个簇。通过迭代优化,每个像素被分配到最接近的簇。K-means聚类通过迭代优化,将图像像素分为K个簇,有效实现图像分割,适用于颜色和纹理明显的图像。

2024-08-11 13:21:52 555

原创 形态学处理方法

腐蚀是一种基本的形态学操作,用于减少图像中的前景像素。主要用于去除小的噪声点和分离相邻的物体。腐蚀操作通过减少图像中的前景像素,有效去除噪声和分离相邻物体,适用于图像预处理和形态学分析。膨胀是一种基本的形态学操作,用于增加图像中的前景像素。主要用于填充物体内部的空洞和连接分离的物体。膨胀操作通过增加图像中的前景像素,有效填补空洞和连接分离物体,适用于图像后处理和形态学分析。开运算和闭运算是组合形态学操作,分别用于去除小的噪声和填补小的空洞。开运算是先腐蚀后膨胀,闭运算是先膨胀后腐蚀。

2024-08-11 10:07:57 440

原创 图像滤波算法

平滑滤波器用于去除图像中的噪声,使图像更加平滑和柔和。常见的平滑滤波器包括均值滤波和高斯滤波。平滑滤波器通过对像素及其邻域像素的平均或加权平均,减少图像中的噪声,使图像更加平滑,适用于图像的预处理和噪声消除。边缘检测滤波器用于检测图像中的边缘信息。常见的边缘检测滤波器包括Sobel算子、Prewitt算子和Canny算子。边缘检测滤波器通过计算图像的梯度,检测图像中的边缘信息,能够有效识别图像中的重要特征,广泛应用于图像分析和计算机视觉领域。

2024-08-10 13:49:34 623

原创 图像增强方法

直方图均衡化是一种图像处理技术,用于增强图像的对比度。通过调整图像的灰度值分布,使得图像的细节更加清晰。直方图均衡化通过重新分配灰度值,提高图像的对比度和细节显示效果,广泛应用于低对比度图像的处理。伽玛校正是一种非线性图像处理技术,用于调整图像的亮度和对比度。通过改变图像的灰度值分布,使图像更加自然、真实。伽玛校正通过非线性变换调整图像的亮度和对比度,使图像显示效果更加自然。锐化滤波器是一类增强图像细节的滤波器,用于提高图像的清晰度。它可以增强图像中的边缘,使图像中的细节更加突出。

2024-08-10 09:25:45 676

原创 图像变换算法

傅里叶变换是一种数学变换,用于将图像从空间域转换到频率域。它广泛应用于图像去噪和滤波。傅里叶变换将图像从空间域转换到频率域,便于频率分析和处理。离散余弦变换(DCT)用于将图像分解为不同频率的余弦分量,广泛应用于图像压缩,如JPEG。DCT将图像分解为余弦分量,实现能量集中和数据压缩。小波变换用于多分辨率分析,可以在不同尺度上分析图像特征,广泛应用于图像压缩和去噪。小波变换通过多分辨率分析,有效处理图像中的细节和特征,实现压缩和去噪。

2024-08-09 20:13:44 704 1

原创 主成分回归和局部线性嵌入

通过找到每个数据点的局部邻域并计算其在邻域内的线性重构权重,然后在低维空间中找到这些权重的最佳嵌入,保持局部线性结构不变。主成分回归(PCR)是一种结合主成分分析(PCA)和线性回归的降维方法,通过在回归之前使用 PCA 将数据投影到低维空间,可以有效减少多重共线性对模型的影响。局部线性嵌入(LLE)是一种非线性降维方法,它通过保留数据局部邻域的线性结构,将高维数据嵌入到低维空间,广泛用于数据可视化和流形学习。降维操作,特别是在高维数据集(如MNIST)上使用非线性方法(如LLE)时,可能会非常耗时。

2024-08-07 15:30:00 829

原创 因子分析和非负矩阵分解

我们将使用 Olivetti 面部图像数据集,该数据集包含 400 张面部图像,每张图像是 64x64 像素的灰度图像。代码展示了如何利用因子分析对高维数据进行降维,并通过可视化直观地展示了因子与原始特征的关系,有助于理解因子分析在数据特征提取中的应用。代码展示了如何利用 NMF 对高维数据进行降维,并通过可视化直观地展示了基向量,有助于理解 NMF 在数据特征提取中的应用。NMF 是一种矩阵分解方法,它将一个非负矩阵分解成两个非负矩阵的乘积,广泛用于数据降维、主题建模和推荐系统。

2024-08-07 09:00:00 480

原创 动量法(Momentum)

动量法通过在梯度下降中引入动量项,能够加速收敛,并减少更新过程中的震荡。这使得动量法在许多优化问题中表现出色,尤其是在复杂函数的优化中。通过直观的图形展示,我们可以更好地理解动量法的优化过程和效果。

2024-08-06 15:30:00 987

原创 t-分布随机邻域嵌入和多维尺度分析

我们将使用经典的MNIST数据集,它包含了大量的手写数字图片,每张图片是28x28像素的灰度图像,共有10个类别(0到9)。代码展示了如何利用t-SNE对高维数据进行降维,并通过可视化直观地展示了降维后数据的分布情况,有助于理解数据集的结构与特征之间的关系。代码展示了如何利用MDS对高维数据进行降维,并通过可视化直观地展示了降维后数据的分布情况,有助于理解数据集的结构与特征之间的关系。MDS 是一种非线性降维方法,通过保留样本点之间的距离关系将高维数据嵌入低维空间,主要用于数据的可视化和相似性分析。

2024-08-06 09:15:00 539

原创 独立成分分析和奇异值分解

与 PCA 不同,ICA 最大化的是信号的非高斯性,而不是方差。代码展示了如何利用ICA对混合信号进行分离,并通过可视化直观地展示了分离前后的信号情况,有助于理解ICA在信号处理中的应用。SVD 是一种矩阵分解方法,将一个矩阵分解成三个矩阵的乘积,常用于降维、压缩和数据降噪。其中,U 是 m×m 正交矩阵,Σ 是 m×n 对角矩阵,V 是 n×n 正交矩阵。其中,U 是左奇异矩阵,Σ 是奇异值对角矩阵,V 是右奇异矩阵的转置。其中,X 是观测数据矩阵,A 是混合矩阵,S 是独立信号矩阵。

2024-08-06 09:00:00 513

原创 主成分分析和线性判别分析

我们将使用经典的MNIST数据集,它包含了大量的手写数字图片,每张图片是28x28像素的灰度图像,共有10个类别(0到9)。代码中展示了如何利用PCA对高维数据进行降维,并通过可视化直观地展示了降维后数据的分布情况,有助于理解数据集的结构与特征之间的关系。代码展示了如何利用LDA对高维数据进行降维,并通过可视化直观地展示了降维后数据的分布情况,有助于理解数据集的结构与特征之间的关系。其中,μi 是第 i 类的均值向量,μ 是所有样本的总体均值向量,Ni 是第 i 类的样本数,c是类别数。

2024-08-05 15:00:00 1534

原创 浅学爬虫-法律和伦理

在编写和运行爬虫时,除了技术上的考虑,还需要关注法律和伦理方面的问题。不遵守相关法律法规和伦理标准可能导致严重后果,包括法律诉讼和对他人权益的侵犯。因此,了解和遵守相关法律法规,确保爬虫的负责任使用,是每个开发者的义务。

2024-08-05 09:00:00 1258

原创 浅学爬虫-爬虫维护与优化

在实际项目中,爬虫的稳定性和效率至关重要。通过错误处理与重试机制、定时任务以及性能优化,可以确保爬虫的高效稳定运行。下面我们详细介绍这些方面的技巧和方法。

2024-08-03 15:00:00 928

原创 浅学爬虫-案例

在这一章中,我们将通过两个案例,展示如何编写实际项目中的爬虫。第一个案例是爬取新闻网站的爬虫,第二个案例是爬取电商网站商品信息的爬虫。这些案例将帮助我们将前面学到的知识应用到实际项目中。

2024-08-03 09:00:00 923

原创 浅学爬虫-并发和代理网络

在进行大型网页爬取时,性能和效率是关键问题。使用并发、多线程和异步编程可以显著提升爬取速度。此外,许多网站会实施反爬机制,阻止自动化爬虫访问。下面我们介绍一些进阶技巧,包括并发和多线程、异步爬虫,以及处理反爬机制的策略。

2024-08-02 15:00:00 1175

原创 浅学爬虫-数据存储

在数据爬取完成后,我们需要将数据存储起来,以便于后续的分析和处理。常见的数据存储方式包括存储到CSV文件和存储到数据库。下面我们详细介绍如何实现这些存储方式。

2024-08-02 09:00:00 815

原创 浅学爬虫-处理复杂网页

在处理实际项目时,网页通常比示例页面复杂得多。我们需要应对分页、动态加载和模拟用户行为等问题。以下是一些常见的场景及其解决方案。

2024-08-01 13:17:12 1148

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除