自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 遍历二叉树、恢复二叉树(java代码实现)

根 左子树 右子树 根 左子树 右子树。(2)由确定的左、右子树根据前序序列分别找出左、右子树的根结点,并把左、右子树的根结点连接到父结点。(2)由确定的左、右子树根据后序序列分别找出左、右子树的根结点,并把左、右子树的根结点连接到父结点。(3)分别对左、右子树实行步骤(1)和(2),直到子树只剩下1个结点或2个结点或空为止。(3)分别对左、右子树实行步骤(1)和(2),直到子树只剩下1个结点或2个结点或空为止。(1)由后序序列获知根结点,然后根据中序序列确定左、右子树。

2022-10-07 03:30:00 672 1

原创 树、森林与二叉树之间的转换

树中结点的各子树从左到右是有次序的(不能互换)。反之为。由一个根结点及两个不相交的左、右子树组成的非空树,左、右子树又同样都是二叉树。在一棵非空的二叉树中,每个结点至多只有两棵子树(左子树、右子树),且左、右子树的次序不能任意交换。(特殊的有序树):深度为h,且有个结点的二叉树。:深度为h,有n个结点的二叉树,当且仅当每一个结点都与深度为h的满二叉树中的编号从1至n的结点一一对应时,此二叉树为完全二叉树。

2022-10-05 14:04:06 1570

原创 线段树Segment Tree(python代码实现)

线段树是一种二叉树(平衡二叉树),也被归类为二叉搜索树(广义上)。它是一种用于对区间修改、维护和查询的工具,可以优化时间复杂度至log级别。基本思想 把一个大区间划分为两个小区间,然后把两个小区间分别划分为两个更小的区间,不断这样划分下去,直到区间内只有一个数据为止。 每个区间存放一个或者多个数据(比如:区间的和,区间的最大值,区间的最小值),以树的形式存放这些数据,则构成了一颗二叉树。 这种存放区间数据的二叉树就是线段树。适合场景:不适合场景:线段树的维护:小区间的值更新大区间的值。线段树主

2022-06-21 16:07:19 1950

原创 并查集(python代码实现)

并查集是一种树型的数据结构,用于处理一些不相交集合的合并与查询问题。主要两种操作(合并和查询):实现: 一个集合构建一棵树,任选一个元素作为该集合的根节点; 建立pre数值记录每个元素的父节点,pre[当前节点]为父节点,根节点的父节点为自己本身。 给定元素关系,将一个集合的树变为另一个集合的子(将一个集合的根节点的父节点改为另一个集合的根节点),如:B的根节点等于A的根节点,这就可以将A和B两棵树合并为一棵树。 判断两个元素是否在同一个集合中: 从该

2022-06-10 17:26:47 4428

原创 经典排序算法——选择排序(python代码实现)

选择排序是一种十分基础的的排序算法,比较简单直观。当对数据量较少的序列实现升序或降序排序是可以采用选择排序。 从头到尾扫描所有的n个元素,从中找出最小或最大的元素并和第一个元素进行交换,然后从除第一个以外的n-1个元素中扫描,找出最小或最大的元素并和第一个(n-1个中)元素进行交换,不断迭代此操作剩下的元素,最终就是一个有序的序列。性能特点待排序列:升序排序 第一趟排序:待排序列中1为最小元素,且1本来就在最小元素位置,则不发生元素交换。第二趟排序:剩下待排序列中4为最小元素,则把4交换到最小

2022-06-10 10:59:06 5819

原创 经典排序算法——冒泡排序及其优化(python代码实现)

冒泡排序是排序算法中非常经典的一种交换排序算法,思想比较简单,容易理解和实现,一般是初学者最早接触的一种排序算法。 之所以称之为冒泡排序,就是因为在排序的过程中,像汽水冒泡一样,元素会逐渐一步一步的上浮到最顶端(最后)。 通过一趟趟地比较,每一趟确定一个剩余待排元素中的最大或最小元素,直到所有元素有序。具体来说,在每一趟排序中,元素两两比较,从起始位置开始,当前元素与后一个元素比较,若这两个元素符合有序,则忽略并后移一个元素继续向后比较,若不符合则先交换元素,然后后移一个元素继续

2022-06-04 14:17:34 4675

原创 数据结构与算法——知识点总结

本文包含数据结构与算法主要的基本知识点,便于知识的梳理和回顾。如需详细了解具体知识点请自行结合课本或者网上查阅。目录1、概述2、线性表3、栈4、队列5、串6、多维数组和广义表7、树和二叉树8、图9、查找10、排序1、概述从2、线性表3、栈4、队列5、串6、多维数组和广义表7、树和二叉树8、图9、查找10、排序...

2022-06-02 17:36:07 24921 7

原创 宽度优先遍历BFS & 深度优先遍历DFS(python代码实现)

广度优先遍历定义图举例实现方法:队列深度优先遍历定义图举例实现方法:栈python代码广度优先遍历1深度优先遍历2

2022-06-02 14:15:00 1224

原创 机器学习之逻辑回归Logistic Regression(python代码实现)

逻辑回归(Logistic Regression)逻辑回归:是一个非常经典的算法。是一种用于解决二分类(0 or 1)问题的机器学习方法,用于估计某种事物的可能性。注:这里用的是“可能性”,而非数学上的“概率”,logisitc回归的结果并非数学定义中的概率值,不可以直接当做概率值来用。该结果往往用于和其他特征值加权求和,而非直接相乘。逻辑回归与线性回归逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模..

2022-05-27 16:00:00 17940 6

原创 机器学习之K均值聚类算法K-Means(python代码实现)

K均值聚类(K-Means)k-means 算法:根据给定的数据样本构建 k 个划分聚类,每个划分聚类即为一个簇。该算法是一个典型的基于距离的聚类算法,采用距离作为相似性的评价指标(两个样本的距离越近,相似度就越大)。每个数据样本必须属于而且只能属于一个簇。同一簇中的数据样本相似度高,不同簇中的数据样本相似度较小。聚类相似度是利用各簇中样本的均值来进行计算的。注:因为在该算法第一步中是随机的选取任意k个对象作为初始聚类的中心,初始地代表一个簇,因此k个初始类聚类中心点的选取对聚类

2022-05-24 11:00:00 10044

原创 机器学习之线性回归算法Linear Regression(python代码实现)

线性回归(Linear Regression)是一种非常简单、用处非常广泛、含义也非常容易理解的一类经典的算法,非常合适作为机器学习的入门算法。线性回归就是拟合出一个线性组合关系的函数。要找一条直线,并且让这条直线尽可能地拟合所有数据点。即:试图找到一条直线,使所有样本到直线上的欧式距离之和最小。一元线性回归(Linear Regression)拟合出一个线性组合关系的函数:y = wx+b 。拟合图像:多元线性回归多元线性回归比一元线性回归复杂,其组成的不是直线,而是一..

2022-05-21 17:09:25 26108 7

原创 推荐系统的主要四个阶段(召回、粗排、精排、重排)

传统划分:1、召回根据用户部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品。特点:速度快。2、排序可以融入较多特征,使用复杂模型,来精准地做个性化推荐。特点:结果精准。精细划分:1、召回(多路召回)根据用户部分特征,从海量的物品库里,快速找回一小部分用户潜在感兴趣的物品。2、粗排(可用可不用,根据场景选择)通过少量用户和物品特征,简单模型,对召回的结果进行个粗略的排序,保证一定精准的前提下,进一步减少选取的物品数量。作用:防止用户召回环..

2022-05-10 15:21:29 11016

原创 样本不平衡问题及解决方法

样本不平衡问题样本不均衡:数据集中不同数据类别的比例差距比较大,即有的类别数据量很多,有的类别数据量很少。产生了一种类别样本分布不平衡的现象。比如,类别样本比例:1:2到1:10(轻微不平衡),超过1:10(严重不平衡)。解决方法一般常见解决方法分为数据层面和算法层面。1、数据层面(采样、数据合成、数据增强)数据增强:直接复制小类样本,对小类样本数据经过一定的处理,做一些小的改变等。1)采样(随机采样):随机欠采样:从多数类样本集中随机选择较少的样本(有放回/无放回)

2022-05-04 10:47:31 4262 1

原创 Transformer 总结(self-attention, multi-head attention)

整体框架图:自注意力1、2、3、4、5、6、多头位置编码残差网络

2022-04-21 13:30:00 744

原创 深度学习常用评价指标(Accuracy、Recall、Precision、HR、F1 score、MAP、MRR、NDCG)——推荐系统

1、准确率(Accuracy)定义:公式:优缺点:2、精确率(Precision)3、召回率(Recall)4、命中率(Hits Ratio)5、平均精度均值(Mean average precision)6、平均倒数排名(Mean Reciprocal Rank)7、归一化折损累计增益(Normalized Discounted Cumulative Gain)...

2022-04-11 17:08:19 12329 3

原创 常用激活函数activation function(Softmax、Sigmoid、Tanh、ReLU和Leaky ReLU) 附激活函数图像绘制python代码

激活函数是确定神经网络输出的数学方程式。激活函数的作用:给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数。1、附加到网络中的每个神经元,并根据每个神经元的输入来确定是否应激活。2、有助于将每个神经元的输出标准化到1到0或-1到1的范围内。常用非线性激活函数对比 激活函数 公式 函数图像 适合场景 Softmax 多分类任务输出层 Sigmoid 二分类任务输出层,模型隐藏层 Tanh

2022-04-10 17:38:18 21712 2

原创 常用损失函数loss(均方误差、交叉熵)

一、均方误差(Mean Squared Error)表示预测值和原始值对应点误差的平方和的均值,常用于线性回归问题。公式:m表示样本数量。二、交叉熵(cross entropy):极其有意思的现象:A和B的交叉熵 = A与B的KL散度 - A的熵。信息论1、信息量含义:越不可能发生(概率越小)的事件发生了,其信息量就越大。公式:表示:负对数函数。2、熵含义:所有信息量的期望。公式:不确定性越大熵越大。相对熵&KL散度(Kullback-L.

2022-04-10 15:06:43 4397 1

原创 matplotlib绘图小结(数据可视化,数据分析)

matplotlib是python的一个绘图库主要画图框架结构:三层结构: 1)容器层 画板层(Canvas) 画布层(Figure) 绘图区(Axes)/坐标系(axis),子图(subplots) 2)辅助显示层 刻度线(xticks、yticks),图例(legend),标签(xlabel、ylabel),标题(title),网格(g...

2021-07-04 17:26:05 845

原创 机器学习之KNN算法(python代码实现)

kNN(k-Nearest Neighbors,k近邻)是机器学习中非常基础的一种算法,算法原理简单而且容易实现,结果精度高,无需估计参数,无需训练模型,而且不仅可以用于分类任务,还可以应用到回归问题。作为开始学习机器学习的入门是一个很好的选择。俗话说:近朱者赤,近墨者黑,物以类聚,人以群分。KNN算法就是这样。它使相同类别的样本在特征空间中聚集在一起。分类时一般采用多数表决投票法,即训练集里和预测的样本特征最近的K个样本,预测为里面有最多类别数的类别。回归时,一...

2021-07-03 11:26:55 16505

空空如也

空空如也

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

TA关注的人

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