- 博客(72)
- 资源 (6)
- 收藏
- 关注
原创 micro-F1和macro-F1评价指标的理解
实际场景下我们究竟该如何选择micro-F1、macro-F1 or Weighted-F1?
2022-10-24 22:57:23
4765
原创 【ML】GBDT、Xgboost和LightGBM的模型理解
机器学习中的集成学习核方法总结,决策树CART,XGBoost,GBDT,LightGBM
2022-05-02 22:15:13
1113
原创 【C++】字符串的基本操作和相关算法题
思路一、问题背景二、字符串的插入、删除和追加操作详解【C++】三、相关算法题【C++】一、问题背景 首先来说字符串问题是十分经典的类型,我们经常会遇到输入是字符串的题目,然后利用各种STL标准库或者是一些动态规划的方法来求解问题,再或者是一些字符串遍历的一些技巧来提高效率等等,下边将介绍C++中相关的字符串常用操作函数以及我们可能常会遇到的算法问题。二、字符串的插入、删除和追加操作详解【C++】1. 字符串的插入(Insert函数)1)在字符串s1的第p(从0开始数)个位置前插入字符串s2:s1
2022-04-28 15:11:36
2205
原创 【C++】字符串子串的系列问题
一、解题背景: 字符串的子串应该是常见的一类有关字符串的算法题目,这里我将leetcode的相关几道题汇总了一下,写了一些具体的思路和多种的求解方法。二、问题求解:3. 无重复字符的最长子串给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。输入: s = “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。/***********************************************************
2022-04-14 22:54:42
3918
转载 【NLP】自然语言处理中的数据增强
自然语言处理中的数据增强 在实际的生产场景下,数据的稀缺性是一种常见的现象,因此如何进行数据增强或者是小样本学习是十分关键的技术。数据增强(DA)在机器学习领域多指采用一些方法(比如数据蒸馏,正负样本均衡等)来提高模型数据集的质量,增强数据。 最开始的数据增强在计算机视觉中得到了广泛的应用,然后被引入到自然语言处理中,并在许多任务中取得了改进。DA方法的重点之一是提高训练数据的多样性,从而帮助模型更好地泛化到未见测试数据。哈工大提出了最新的《自然语言处理数据增强方法》综述论文,155页pdf阐述
2022-04-12 15:49:10
1184
原创 【Python】SyntaxError: invalid syntax jedi
一、问题背景 突然在写代码的时候,if的条件语句下突然报错,显示:It selects exactly one of the suites by evaluating the expressions oneby one until one is found to be true (see section Boolean operationsfor the definition of true and false); then that suite is executed(and no other
2022-04-01 09:49:15
3219
原创 【C++】前序中序(或后序遍历)构造二叉树
一、背景 每次用前序与中序或是中序与后序遍历来构造二叉树的问题,其实思路挺清晰的就是找出每个位置的父节点,然后递归,就是每次写出来下次怎么实现的又搞不清楚了,记录下来以后能快速的回想起来respect!!!二、解题思路105. 从前序与中序遍历序列构造二叉树思路还是比较清晰的,首先我们明白前序遍历的第一个节点就是根节点,然后根据这个信息,从中序遍历中找出左右子树的范围,然后去递归实现。class Solution {public: TreeNode* buildTree(vector&
2022-03-25 15:22:24
2589
原创 【C++】动态规划-求解子序列等系列问题
一、问题背景 动态规划是一个对我而言比较复杂的一个问题,于是我想在这记录下我平时遇到过的动态规划的题目,以及总结其解体的通用思路。二、问题求解看到了有博主总结的dp的解题思路,我在这里分享给大家:确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历的顺序举例尝试推导dp数组以下是leetcode中的相关的例子1143. 最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,
2022-03-22 10:52:38
2053
原创 【C++】前缀和方法系列问题求解
一、结题背景 在刷leetcode的相关算法题的时候,对于求解数组的连续子数列的和的相关问题。常能想到的就是双层遍历,暴力求解,但是这样的效率不高,所以我们这里引入哈希表来降低时间复杂度,只用遍历一次便能求解出答案。二、相关问题1. 两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。
2022-03-17 11:50:01
1240
原创 【C++】0314算法阿里笔试题
一、题目二、 自己的dfs的题解#include <bits/stdc++.h>using namespace std;int res3=INT_MAX;int transfet(vector<string> &tmp) { int sum=0; for (auto &t: tmp) { sum += stoi(t); } return sum;}void dfs(string str, vector&l
2022-03-14 22:13:31
889
原创 【C++】单调栈解法的相关题目
一、解题背景 在刷题的过程中遇到部分比较难的题目是需要利用单调栈的思想来进行求解题目的,这类问题往往有一个统一的思路,需要在遍历的过程中保存一个单调递增的序列或者是单调递减的序列,一旦不满足单调性的时候,就就需要做一些处理来获取我们想要的结果。二、部分题目leet84. 柱状图中最大的矩形给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。class Solution {public: int la
2022-03-11 15:07:15
1388
原创 【C++】二叉树中路径系列问题
二叉树中所有路径,以及满足求和为N的子路径等系列问题求解0X00. 问题1:二叉树根到叶子节点所有路径总数给你一个二叉树的根节点 root ,按任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。class Solution {public: vector<int> tmp; vector<string> res; vector<string> binaryTreePaths(TreeNode* root)
2022-03-09 11:35:36
883
原创 【Pytorch】易忘函数scatter的理解
一、Scatter函数的理解 这个函数是用一个src的源张量或者标量以及索引来修改另一个张量,常用来做one-hot编码。这个函数主要有三个参数 scatter(dim,index,src)dim:沿着哪个维度来进行索引(一会儿举个例子就明白了)index:用来进行索引的张量src:源张量或者标量# 这里是三位矩阵的情况下self[index[i][j][k]][j][k] = src[i][j][k] # if dim == 0self[i][index[i][j][k]][k] =
2022-02-24 23:01:54
560
原创 【C++】priority_queue的理解及实战解决k路归并问题
一、相比刷leetcode各位已经知道了priority_queue的重要性!!! 在C++中的priority_queue底层是堆(heap)来实现的,priority_queue又称为优先队列。在优先队列中,队首元素一定是当前队列中优先级最高的那一个。 当然,可以在任何时候往优先队列里面加入(push)元素,而优先队列底层的数据结构堆(逻辑实现是完全二叉树,具体的构建方法自行查阅)会随时调整结构,使得每次的队首元素都是优先级最大的。二、用法:0x00 定义为:priority_queue &
2022-02-21 15:39:19
1368
3
原创 【C++】快速幂的递归和迭代实现及LeetCode加速代码
快速幂(Exponentiation by squaring,平方求幂)是一种简单而有效的小算法,它可以以O(logn)的时间复杂度计算乘方。快速幂不仅本身非常常见,而且后续很多算法也都会用到快速幂。一、递归快速幂递归方程如下:上述的迭代式无疑是一种二分的思想,来减少做乘法的次数;将上述的迭代式写成递归的代码如下:double qpow(double x, int n) { if (x==0) return 0; // int32 变量 n ∈ [-2147483648, 2147483
2022-02-18 12:12:23
1096
原创 【C++】归并排序的理解-剑指offer51:计数数组中的逆序对和148:排序链表
归并排序的理解-解决数组中的逆序对问题0x00 归并排序的基本思想:0x01 利用归并排序来计算数组中逆序对个数:0x00 归并排序的基本思想:归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之)。其过程展示图如下(这里以数组[8, 4, 5, 7, 1, 3, 6, 2]为例子):最后
2022-02-17 14:56:55
688
原创 深度学习中句子语义表征融合中加、乘方式的理解
一、问题背景 往往我们在将文本信息和图片信息进行Embedding表示之后,有时候我们需要进行语义信息的融合,我们常常使用简单的加法或点乘来进行信息融合,虽然加法和乘法交互看起来都挺自然而直观,但我们应该选择哪种方法? 在阅读论文的时候,偶然发现了来自 AAAI2018年接受的 FiLM: Visual Reasoning with a General Conditioning Layer 论文,提出了一种可以嵌入到CNN模型中的通用网络层,用于多输入任务。例如,对于分类+回归的任务,有可能回归任
2021-12-04 23:06:40
4240
1
原创 【Python】根据预测结果矩阵与实际结果矩阵计算模型正确率
判断两个数组对应位置相等的个数,然后计算模型预测的正确率一、问题背景二、解决方法一、问题背景 在多分类模型预测的结果中,我想知道预测的结果与实际的答案相比,其正确率是多少,这个时候我们往往是对应比较两个数组list之间对应相等的个数。因此,我大致总结了一些方法来计算此正确率。假设我们此处的预测结果和实际结果分别为:# 假设是三分类任务,存在0,1,2三种结果list1 = [1,2,0,0,1]list2 = [1,0,2,1,1]二、解决方法方法1:我立马能想到的方法就是直接遍历数组直
2021-11-28 21:40:22
2360
原创 深度学习中常见的句子编码方式(句子语义表示的方法)
一、Bert预训练:其中我们常用Bert预训练之后产生的CLS Token的浓缩表示表示一个句子;其次我们会使用seq长度的token组合的表示,这样多了一个句子长度的维度。二、BiLSTM:将前向lstm和后向lstm进行结合,这样句子就包含了前向和后向的所有信息,但这一类的方法由于LSTM的本身的时序性,导致了其耗时比较长;三、Glove等词向量模型:有时候直接使用目前现成的简单的词向量模型,效果反而还挺不错的;四、词袋模型:这种表示完全丢失了句子的语义顺序,大多数时候是不
2021-11-25 22:20:22
1970
原创 【Python】易忘的某些函数用法(实时更新)
以此记录自己常忘记的函数用法一、torch.stack vs torch.cat二、python中的 * 和 ** 作用含义三、torch.Tensor.index_add_一、torch.stack vs torch.cathop = []hop.append(torch.randn(2,3))hop.append(torch.randn(2,3))'''[tensor([[ 1.2735, 0.7435, 1.9758], [-0.8915, -1.2238, 1.55
2021-11-04 22:01:52
502
原创 【Pytorch】pack_padded_sequence与pad_packed_sequence实战详解
一、问题背景 在NLP的相关任务中,我们使用RNN或LSTM处理文本序列时,通常来说句子的长度是不一致的,我们常常采用的方法使用< PAD >(0)来补全至相同长度的序列。虽然这个时候序列的长度是一致的,但是序列中填充了许多无效值 0 ,这个时候喂给 RNN 进行 forward 计算,不仅1.浪费计算资源,最后得到的值2.可能还会存在误差。 因此,为了解决这样的问题,在将序列送给 RNN 进行处理之前,需要采用 nn.utils.rnn.pack_padded_sequence 进行压
2021-10-24 15:46:24
2838
1
原创 【Mac m1】在pytorch环境下安装transformer
一、问题背景 项目中需要用到huggingface中的transformers中的预训练模型,由于我的电脑是2020款mac m1芯片,conda下的pytorch环境已用miniforge安装完成,我第一次直接使用pip install transformers ,然后就报错了????: 从上述的问题可以发现是tokenizers安装失败,那么究竟为啥会失败呢,经过查阅相关资料后,如果要安装transformers, transformers主要依赖tokenizers,安装tokenizers
2021-10-18 11:29:35
4911
4
转载 【C++】字符串和数字互相转换大全
一、使用字符串流对象进行数字转换C++ 有两个类,ostringstream 和 istringstream,可以用来对内存中的值执行字符串/数字转换。必须在程序中包含 sstream 头文件才能使用这些类。以下是这些类的用法://This program illustrates the use of sstream objects#include <sstream>#include <iostream>#include <string>using name
2021-09-08 15:57:11
6163
原创 【Pytorch】numpy数组与tensor互相转换的多种方法
一、numpy数组转化为torch中的tensor:总的来说有四种方法,如下:import torchimport numpy as nparr1 = np.array([1,2,3], dtype=np.float32)arr2 = np.array([4,5,6])print(arr1.dtype)print("nunpy中array的默认数据类型为:", arr2.dtype)tensor = torch.tensor(arr2)Tensor = torch.Tensor(arr
2021-09-04 16:10:46
62415
6
原创 【Pytorch】训练过程中学习率变化的几种策略
一、问题背景 我们往往在训练模型的时候,学习率不能是一成不变的,大的学习率收敛快,但可能出现过拟合的情况,难以达到最优点;小的学习率收敛较慢,耗时较长,但能将loss降得更低。 因此训练全过程并不是使用一个固定值的学习速度,而是随着时间的推移让学习率动态变化,比如刚开始训练,离下山地点的最优值还很远,那么可以使用较大的学习率下的快一点,当快接近最优值时为避免跨过最优值,下山速度要放缓,即应使用较小学习率训练,具体情况下因为我们也不知道训练时的最优值。二、解决方案 一种比较经典的策略就是warm
2021-08-27 16:01:11
2764
2
原创 Dropout层的个人理解和具体使用
一、Dropout层的作用 dropout 能够避免过拟合,我们往往会在全连接层这类参数比较多的层中使用dropout;在训练包含dropout层的神经网络中,每个批次的训练数据都是随机选择,实质是训练了多个子神经网络,因为在不同的子网络中随机忽略的权重的位置不同,最后在测试的过程中,将这些小的子网络组合起来,类似一种投票的机制来作预测,有点类似于集成学习的感觉。 关于dropout,有nn.Dropout和nn.functional.dropout两种。推荐使用nn.xxx,因为一般情况下只有训练
2021-08-24 23:29:34
38332
3
原创 【Python】去除字符串中标点符号的多种方法
一、问题背景 由于最近做nlp相关的项目,在进行数据预处理的时候,需要对文本进行分词、去停用词、词性标注、标点去除等预处理方法。 由于标点符号会影响我们分词的效果,这里我着重了解学习了标点去除的方法,总结了有以下几种,欢迎大家补充????二、解决方案以下描述了4种方法:import reimport stringsentence = "+今天=是!2021! 年/8月?1,7日★.---《七夕节@》:让我*们出门(#@)去“感受”夏天的荷尔蒙!"sentenceClean = []
2021-08-17 12:33:13
25500
7
原创 【Spark】Spark训练Lr模型,并保存为Pmml
scala版本spark构建的Lr模型:模型接口详情可以参考spark的scala的API文档:https://spark.apache.org/docs/latest/api/scala/org/apache/spark/index.htmlimport org.apache.spark.ml.Pipelineimport org.apache.spark.ml.classification.{LogisticRegression, LogisticRegressionModel}import o
2021-08-10 18:36:27
1249
原创 【Spark】如何将spark中DataFrame的内容保存到一个或多个csv文件
一、问题背景 原本我是想利用spark处理大量的数据集来训练Lr模型,然后需要提取数据集中的标签索引,然后我就想将标签的索引保存成csv格式的数据,再直接导入到hive表中。 这里我们需要得到csv格式的数据,首先我想到可以先创建成dataframe格式的数据==>再转换成csv格式数据。二、解决方案 经过我的一系列变换,将我所需要的数据都存储到了ListBuffer的数组中,然后直接利用createDataFrame来创建df数据,代码如下:import org.apache.spa
2021-07-21 18:30:23
8747
原创 【Seq2seq】Decoder中提高模型回复多样性方法
一、问题背景 最近研究了seq2seq模型的相关优化算法,包括有其中的Attention、dropout、Scheduled Sampling和Teacher Forcing等优化、训练模型的方法。以下是传统seq2seq模型结构,没有进行任何优化,该模型分为两部分:编码器和解码器。 编码器读取输入文本,并返回代表该输入的向量。 然后,解码器获取该向量并依次生成相应的文本。 这样依次按概率生成词的模式,就会使得系统为了达到生成结果的概率最大,就会产生很多通用一致的回复,这必然是我们不想看到的,所以
2021-05-26 18:31:52
926
1
原创 二叉树的层次遍历队列和数组实现C++
下面利用c++实现的二叉树的层次遍历,这也是剑指offer中面试32题 ==> 从上到下打印二叉树,同一层中从左至右打印。 我分别使用队列queue和数组array来实现了这个遍历过程,总的来说两种方法的思路比较类似。思路:都是先将节点放入容器中,然后再依次放入该节点的左右孩子节点,然后打印该节点,之后移动下标或弹出该节点。具体的思路可以从代码中感受,只有自己去梳理并写一遍才是最深刻的哈哈<( ̄︶ ̄)↗[GO!]#include<iostream>#inclu
2021-04-30 16:16:15
635
1
原创 【Python】处理json文件
1. JSON介绍 首先介绍一下JSON文件格式,JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。 它的格式是以大括号区分来存储数据,json和dict非常类似,都是key-value的形式,而且json和dict也可以非常方便的通过dumps和loads互转,但是它们之间还是有区别的:json:是一种数据格式,是纯字符串。可以被解析成python的dict或其他形式。dict:是一个完整的数据结构,是对hash table这一数据结构的实现
2021-04-29 15:28:21
326
原创 RuntimeError: Output 0 of SelectBackward is a view and is being modified inplace.
1. 问题背景今天在浏览一些代码的时候,总是出现了以下的错误描述RuntimeError: Output 0 of SelectBackward is a view and is being modified inplace. This view is the output of a function that returns multiple views. Such functions do not allow the output views to be modified inplace. You
2021-04-28 14:20:22
8802
原创 SQL实战初级技能+常用场景代码
1. SQL过滤 :SQL1: =select * from <表名>where day=20200202and temperature = 6and province= '江苏'很明显,这是查温度=6度,省=江苏的数据。注意,数据类型数字直接=,汉字或英文需要加半角单引号’’。SQL2:BETWEENwhere day=20200202and temperature between 0 and 5and province= '江苏'SQL3:Like(Like模
2021-04-27 13:57:15
315
原创 如何在线打开Xmind文件 — 百度脑图在线工具
1.问题背景: 某些时候会接收到别人发给我们的xmind(一种思维导图)的文件,但苦于我们的电脑上没有下载Xmind软件,所以我们怎么快捷的查看该文件的内容呢?2.解决方案:Step 1: 我在网络上搜索了相关的解决方法,发现一个比较快捷的,因此推荐给大家,就是我们可以直接使用百度脑图 (https://naotu.baidu.com/)来直接打开xmind类型文件。 首先我们需要登录我们的百度账号进去,然后就进入到了以下界面:Step 2: 然后我们点击新建脑图,然后再直接点击这
2021-04-21 16:33:48
49327
13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人