- 博客(44)
- 收藏
- 关注
原创 图论:三维搜索
重复刷太多相同的题目很容易产生思维惯性。像习惯了套公式,就忘了判断是否满足使用条件或者不会对公式进行变形。导致题目一点点的改变,就让人产生似是而非的错觉,但其实本质还是一样,只是自己没有培养发现本质的能力。没有总结和思考的刷题,反而会成为限制我们发挥的负担。孔子说过:学而不思则罔。
2025-01-07 18:04:21
663
原创 图论:Tarjan算法的使用,找连通分量、割点、桥
感谢B站:“邋遢大哥233”的教学视频图的连通性连通图(Connected Graph):无向图中任意两个顶点都是连通的,即存在一条路径连接它们.强连通图(Strongly Connected Graph):有向图中任意两个顶点都是强连通的,即存在从一个顶点到另一个顶点的路径,反之亦然.连通分量(Connected Component):无向图中的最大连通子图.强连通分量(Strongly Connected Component):有向图中的最大强连通子图.割点(Cut Vertex):删除后会
2025-01-06 17:36:05
576
原创 C++技巧:map和vector
选择std::map还是取决于具体的应用场景。如果需要有序遍历或者对元素进行范围查询,std::map是更好的选择。如果需要快速的查找性能,并且不关心元素的顺序,则是更合适的选择。
2025-01-03 17:44:40
906
原创 C++练习:记忆搜索
记忆搜索(Memoization)是一种优化递归算法的技术,旨在通过存储已经计算过的结果来避免重复计算,从而提高算法的效率。记忆搜索通常结合递归来使用,可以在不改变递归逻辑的情况下显著提升性能。
2024-12-26 18:06:09
1060
原创 C++练习:图论的两种遍历方式
一提到遍历,我们首先想到的肯定是树的遍历。因为在数据结构中我们是从树引出图的。但图明显比树更常见,更丰富,更多变。所以我们可能会被树的一些知识所固化了思维。比如树的遍历有前、中、后遍历,或者深度优先、广度优先搜索等。但这些都是正向遍历,从一个固定的起点开始,自上而下。可在图中除了正向遍历,你还可能可以逆向遍历。
2024-12-24 14:23:15
638
原创 关于Qt中query.addBindValue()和query.bindValue()报错:Parameter count mismatch
2.还有就是query.lastError().text()的报错没有指明是addBindValue函数的错误,还是查询的错误。在就近原则下让人以为是前者。1.这个坑点是query.lastQuery()它会输出被替换的query,让你以为参数没有被替换掉。在排除了中文问题,和占位符不够两个原因后发现是sql语句问题,参数不匹配是sql语句中不匹配。
2024-12-21 23:19:35
370
原创 pandas:常用函数
groupby对数据进行分组,然后对每个组应用函数(如求和、平均值、最大值等)。对分组后的数据进行转换或过滤。计算分组后的数据描述统计量。将索引(或索引之一)转换为列。重置索引到默认整数索引。apply对 DataFrame 的行或列应用一个函数。返回应用函数后的结果,可以是 Series 或 DataFrame。# 定义一个自定义函数# 对每一列应用自定义函数A 2B 2C 2agg同时对多个列应用不同的聚合函数。灵活处理复杂的数据聚合需求。
2024-12-13 18:12:16
852
原创 df = pd.DataFrame(data)中的data可以是什么类型的数据?
请注意,这些输出是基于pandas的标准设置,实际输出可能会根据你的pandas版本和环境设置有所不同。
2024-12-13 18:02:27
285
原创 机器学习环境
如果没有指定 Python 版本,通常建议使用 Python 的最新稳定版本,因为它通常会包含最新的功能和安全修复。对于大多数库来说,Python 3.8、3.9 和 3.10 都是广泛支持的版本。
2024-12-13 17:28:11
690
原创 pandas:sort_values是怎么排序的
pandas中的方法用于对 DataFrame 或 Series 的值进行排序。这个方法非常灵活,允许你指定排序的列、排序的顺序(升序或降序)以及是否要稳定排序(即保持具有相同值的行的原始顺序)。
2024-12-10 12:23:43
618
原创 pandas:melt
pandas的melt函数用于将 DataFrame 从宽格式转换为长格式。这对于数据重塑非常有用,尤其是在你需要将分类变量转换为观察值时。以下是melt。
2024-12-10 11:51:18
522
原创 C++练习:n皇后
链接: N 皇后 II皇后问题是回溯的经典题目。问题的关键在于条件:皇后彼此之间不能相互攻击。通过自上往下枚举我们可以保证皇后不在同一行和同一列。故解题的关键在于斜边上的互不攻击。由此可以想到两种做法。1.通过斜边公式判断皇后是否在同一条斜边。2.通过左移和右移模拟皇后的斜边然后判断。前一种方法适合用集合表示,后一种适合用位运算。#代码:
2024-12-02 18:32:05
192
原创 当你的输入多了一维
map()返回一个新的数据集对象,其中包含原始数据和经过处理后的新字段。你可以通过参数来控制是否保留原始数据。使用map()后,你可以检查新数据集的内容,确保预处理步骤正确无误。通过上述方法之一,你可以确保input_ids和的形状与labels一致,从而避免多一维的问题。选择适合你的具体实现方式,并确保在实际训练过程中验证这些更改是否解决了问题。
2024-12-01 03:41:15
652
原创 关于 解决Weights & Biases(wandb)的登录和配置问题。
Weights & Biases (wandb) 是一个用于机器学习实验跟踪、可视化和管理的平台。它允许数据科学家和研究人员记录实验的参数、代码、结果和模型,以便更好地理解、比较和复现实验。
2024-12-01 03:24:27
680
原创 kaggle笔记:对推理函数inference(df, model, tokenizer, device)的分析
灵活性通过这种方式,inference函数能够有效地处理大型数据集,生成每个文本样本的嵌入表示,并将它们组合成一个整齐的数组,以便用于后续的分析或机器学习任务。重新排序嵌入在inference函数中,重新排序嵌入(embeddings)是为了确保最终的嵌入列表与原始输入数据中的顺序相匹配。这个过程是必要的,因为在函数的早期步骤中,为了提高处理效率,对输入句子进行了排序。
2024-11-26 18:09:43
931
原创 kaggle上T4 GPU和V100 GPU在性能上有何不同?
总的来说,V100在几乎所有性能指标上都优于T4,但价格也更高。选择哪种GPU取决于你的具体需求、预算和应用场景。对于需要极高计算性能和大规模并行处理的任务,V100是更好的选择;而对于成本敏感或计算需求较低的任务,T4可能是一个更合适的选择。NVIDIA T4 GPU和V100 GPU是针对不同应用场景设计的,它们在性能上有显著差异。
2024-11-25 10:08:03
1269
原创 竞赛笔记:Hybrid Search (Ensemble Encoder + BM25)
这个函数通过构建一系列对话提示,模拟了一个问答和分析的过程,以预测问题中的误解。它利用了一个模型(phi_pipe)来生成预测结果,并从结果中提取误解信息。这种方法可以用于教育领域的误解检测,帮助教师和学生识别和纠正常见的误解。这个函数处理一批问题,生成每个问题的误解预测结果。它结合了多种方法,包括嵌入生成、语义搜索、关键词搜索和混合搜索。这个函数通过集成不同模型生成的嵌入向量,结合语义搜索和关键词搜索,实现了对问题中误解的预测。它利用了多种方法的优势,提高了预测的准确性和鲁棒性。
2024-11-19 15:44:43
576
原创 C++练习:二分查找之中位数的作用
中位数是将一组数据按照大小顺序排列后,位于中间位置的数值。如果数据的个数是奇数,中位数就是中间的那个数;如果数据的个数是偶数,中位数则是中间两个数的平均值。
2024-11-19 14:24:16
361
原创 什么是BGE模型?
BGE模型的目标是成为中文世界的通用embedding模型,支持所有embedding使用场景,包括但不限于检索(retrieval)、重排(re-rank)、聚类(clustering)、分类(classification)、配对分类(pair-classification)等任务。BGE模型的一个重要成员是BGE-M3,它支持超过100种语言的语义表示及检索任务。BGE模型的训练数据由无标签数据和有标签数据组成,无标签数据使用了悟道等数据集,有标签数据使用了dureader等数据集。
2024-11-13 16:37:52
1277
原创 什么时候用多进程,什么时候用多线程
多线程适合资源共享、I/O密集型、轻量级任务和需要快速响应的场景。多进程适合CPU密集型任务、需要高隔离性、高安全性和清晰编程模型的场景。在实际应用中,多进程和多线程的选择往往需要根据具体的应用需求和环境进行权衡。有时候,也可以结合使用多进程和多线程,例如,在多进程的基础上,每个进程内部使用多线程来进一步提高并行度和性能。
2024-11-05 11:50:28
411
原创 C++练习:回溯
回溯算法是一种通过试错来解决问题的算法,它尝试分步的去解决一个问题。在分步解决问题的过程中,当它通过尝试发现现有的分步答案不能得到有效的正确的解答的时候,它将取消上一步甚至是上几步的计算,再通过其他的可能的分步解答再次尝试寻找问题的答案。:记录已经选择的路径,即当前部分解。:记录当前可以选择的选项,即候选解。:确定目标条件,即满足什么问题的条件。:如果当前路径不能得到有效解,回溯到上一步,选择另一个选项。:重复步骤4和5,直到找到所有可能的解或者剪枝操作剪去了所有可能的路径。
2024-11-01 11:36:47
403
原创 比较对比FILE,fstream和文件描述符
FILE适合于需要简单文件操作的C/C++程序,易于使用且跨平台性好。fstream适合于需要面向对象接口和异常处理的C++程序,功能强大且易于集成。文件描述符适合于需要高性能和直接文件控制的系统级程序,尤其是在Unix-like系统中。选择哪种机制取决于具体的应用需求、性能要求和开发环境。
2024-10-31 15:06:09
543
原创 getaddrinfo 是什么?
是更好的选择,因为它支持 IPv6、性能更好、错误处理更完善。而对于需要进行主机名到 IP 地址解析的场景,建议使用。是两个不同的函数,它们在网络编程中用于不同的目的和场景。综上所述,对于需要处理 IP 地址转换的场景,
2024-10-30 17:07:37
296
原创 C++练习:股票买卖的最佳时机(1~4)
这是一道简单题,思路是找卖出那一天前的最低价格,然后记录卖出后的最大利润。按照动态规划的思路解题,我们需要找到原问题和子问题的转移关系。分析:n天内的最大利润,一定是1~n内某一天卖出股票的最大利润。我们知道要使我们手中的股票得到最大利润,就要在之前的最低价格购买。所以我们只要建立一个最低价格数组minimon,记录第i天前的最低价格,我们就可以得到第i天卖出股票的最大利润prices[i] - minimon[i]。而如何维护minimon数组?
2024-10-30 11:25:29
981
原创 C++练习:贪心+二分查找
我们可以比较lens[i+1](长度为i+1的递增数组的最小尾数)和num的大小,把比较小的哪个放到lens[i+1]中lens[i+1]中存放的是长度为i+1的递增数组的最小尾数。于是对于遍历过程中的每个num我们只要在lens数组中找到第一个大于等于nums的值lens[i],并更新它。如果我们用一个数组记录不同长度的递增数组的最小的尾数,就叫这个数组为lens,其中lens[i]位长度为i的递增数组的最小尾数。在上面的讨论中,我们需要在lens数组中找到第一个大于num的值的下标。
2024-10-25 18:19:59
663
原创 C++基础:位
在C++中,位(bit)是数据的基本单位,代表一个二进制数字,即0或1。位操作是直接对整数在内存中的位进行操作,这包括按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)和右移(>>)等操作。位操作通常用于底层编程、性能优化、硬件接口编程等领域。以下是C++中一些常见的位操作:1. 按位与(&):- 两个位都为1时结果才为1,否则为0。- 例如:`5 & 3`(二进制:`0101 & 0011`)的结果是`1`(二进制:`0001`)。
2024-10-25 11:05:56
968
原创 C++练习:Lambda
在C++中,Lambda表达式是一种匿名函数,它允许你在不预先定义函数的情况下快速创建函数对象。Lambda表达式通常用于编写简短的、一次性的函数,它们可以捕获和使用周围作用域中的变量。
2024-10-24 18:01:03
270
原创 C++练习:动态规划
动态规划(Dynamic Programming,简称DP)是一种在数学、管理科学、计算机科学、经济学和生物信息学等领域中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划的关键在于它将一个复杂的问题分解成一系列相似的子问题,并且这些子问题可以合并解决。通常用于解决最优化问题。动态规划算法中,每个子问题只解决一次,并将其解决方案存储在一个表格中,这样在需要时可以直接查询,避免了重复计算。
2024-10-23 17:43:19
409
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人