自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 时钟(CLOCK)置换算法

      当调入进程所请求的页面时,如果内存中已经没有空闲块了,则必须按照某种算法将内存中的若干页面淘汰至外存。用于选择淘汰页面的算法称为页面置换算法,置换算法的好坏,将直接影响到请求分页系统的性能。FIFO置换算法和LRU置换算法的思想都比较容易理解,页面置换的推导也是简单的。但是CLOCK置换算法比较难从书上获取准确的概念了,教材上的定义替换指针的位置描述得不清楚,网上的clock例子也...

2018-12-28 21:44:19 54423 30

原创 遗传算法解决TSP问题(Pyhton代码)

遗传算法的原理参考维基百科:https://zh.wikipedia.org/wiki/%E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95遗传算法流程图:遗传算法的思想和流程都是很简单的,但是运用在具体应用时却会常常无从下手。如何编码解码,如何进行交叉是两个难点。本文以用遗传算法解决旅行商问题(TSP)为例。问题描述:现有34个城市,已知其坐标;从其中某一...

2018-09-05 20:43:20 24335 50

原创 模拟退火算法实现寻找函数最值

模拟退火的算法思想:模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,即在局部最优解能概率性地跳出并最终趋于全局最优。模拟退火算法模板:初始温度T=100冷却速率rate=0.99while T>1: 随机生成一个解 x=random 随机解的适应度 y=f(x) 如果...

2018-08-30 15:58:53 5679

原创 遗传算法实现寻找函数最值

遗传算法的原理参考维基百科:https://zh.wikipedia.org/wiki/%E9%81%97%E4%BC%A0%E7%AE%97%E6%B3%95遗传算法流程图:遗传算法的思想和流程都是很简单的,但是运用在具体应用时却会常常无从下手。如何编码解码,如何进行交叉是两个难点。遗传算法的最简单例子——寻找函数f(x)=x+5sin(5x)+2cos(4x)在区间[0,10]...

2018-08-30 15:28:20 2023

原创 粒子群优化算法实现寻找函数最值

粒子群算法简介粒子群优化(Particle Swarm Optimization, PSO),又称微粒群算法,是由J. Kennedy和R. C. Eberhart等于1995年开发的一种演化计算技术,来源于对一个简化社会模型的模拟。其中“群”来源于微粒群匹配M. M. Millonas在开发应用于人工生命的模型时所提出的群体智能的5个基本原则。“粒子(particle)”是一个折衷的选择,因...

2018-08-30 14:43:40 9461

原创 rdt 可靠数据传输协议

计算机网络的设计基本方案是复杂化,多功能化应用层,运输层的协议设计,从而使得网络层,链路层,物理层变得相对简单,网络搭建的物质条件变得简单。由于网络层较为简单,采用了无连接的协议,在不可靠信道上传输,导致数据传输是不可靠的。为了保证数据传输的可靠性,我们选择在运输层采用复杂的rdt(可靠数据传输协议),以完成网络的可靠性。原理图如下所示:rdt协议经历了rdt1.0,rdt2.0,rd...

2018-05-20 11:22:54 33934 21

原创 sklearn marco vs micro

多类别任务的评估指标一般有的计算方式有mirco和marco之分,micro使用全体样本计算指标,marco使用各类别的指标均值。以F1_score为例,二分类的F1_score计算公式为:F1=2×Precision×RecallPrecision+RecallF1 = \frac{2 \times Precision \times Recall}{Precision + Recall}F1=Precision+Recall2×Precision×Recall​多分类F1_score分为:mi

2021-11-20 21:51:14 936

原创 lightgbm 自定义metric函数

lgb 自定义函数模板:# f(preds: array, train_data: Dataset) -> name: str, eval_result: float, is_higher_better: booldef f(preds, train_data): ''' :param preds: array, 预测值 :param train_data: lgb Dataset, lgb的传入数据集 :return: ''' ### 返回

2021-11-10 14:37:14 4152 1

原创 pandas dataframe 两列转字典

在数据处理时,时常需要将数据表的两列转化为字典映射形式df[[‘A’,‘B’]] -----> dict(key:A, value:B)方法一:使用zipd = dict(zip(df['A'],df['B']))import pandas as pdimport numpy as nptest_dict = {'id':[1,2,3,4,5,6],'name':['Alice','Bob','Cindy','Eric','Helen','Grace '],'gender':[0,

2021-10-26 19:08:29 6277

原创 CTR 树模型-特征工程代码

刚参加完一场CTR比赛,原本打算使用NN解决问题,后期发现树模型效果意外的好,学习了一些树模型处理CTR问题的特征工程代码。曝光特征,交叉特征(count, nunique)# 统计特征 count,nunqiuedef cnt_stat(df, group_cols, target_col=None, use_cnt=True, use_nunique=True): if isinstance(group_cols, list): col_name = '_'.join(gr

2021-09-28 11:45:29 411

原创 lightgbm 各任务基本代码

lightgbm适用于多个任务(回归,二分类,多分类),具体的参数需要做出变化,下面给出各任务的基本代码。回归import sklearnfrom sklearn import datasetsfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import roc_auc_score,mean_squared_errorimport numpy as npimport lightgbm as lgb

2021-09-27 21:58:56 836

原创 leetcode1081. 不同字符的最小子序列

1081. 不同字符的最小子序列返回 s 字典序最小的子序列,该子序列包含 s 的所有不同字符,且只包含一次。示例 1:输入:s = “bcabc”输出:“abc”示例 2:输入:s = “cbacdcbc”输出:“acdb”1 <= s.length <= 1000s 由小写英文字母组成本题与316. 去除重复字母是一样的题目。如果没有接触过单调栈很难掌握本道题,看过一遍题解代码后,再做一次还是不会。如果只是知道最简单的单调栈,那么自己写这道题也会比较难

2021-08-18 22:30:48 274

原创 leetcode 丑数

264. 丑数 II给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组成的序列。示例 2:输入:n = 1输出:1解释:1 通常被视为丑数。首先肯定不能遍历各个整数,判断其是否只包含质因数 2、3 和 5,这样算法会超时。方法一:优先队列+hash使用优先队列记录模拟过程,每次将最小的数

2021-07-19 18:35:27 184

原创 算法导论 编辑距离

编辑距离是动态规划算法学习的经典问题。leetcode有一道面试常考的72. 编辑距离算法导论上的编辑距离实验要比leetcode上的实验更加的难算法导论书编辑距离习题:为了将一个文本串x[1..m]x [ 1.. m ]x[1..m] 转换为目标串y[1..n]y [ 1.. n ]y[1..n],我们可以使用多种变换操作。我们的目标是,给定xxx 和yyy ,求将xxx转换为yyy的一个变换操作序列。我们使用一个数组zzz 保存中间结果,假定它足够大,可存下中间结果的所有字符。初始时,zzz是空

2021-07-18 22:29:38 399 1

原创 numpy 强制类型转换问题

今天用numpy遇到一个关于类型转换的问题,import numpy as npA = np.array([1,2,3,4,5,6,7,8,9]) A[0]=3.2print(A)# [3 2 3 4 5 6 7 8 9]可以发现A[0]=3.2,被强制转换成整型3了。发生的原因是A的类型是np.int,赋值浮点数,会自动转为整型。这样的问题一旦出现很难发现,在写成程序时要提前想好要用的np类型。补充,两个整型np.array做运算时,会根据运算自动转换类型。A = np.array

2021-06-24 13:27:13 831

原创 leetcode 1872. 石子游戏VIII

1872. 石子游戏 VIIIAlice 和 Bob 玩一个游戏,两人轮流操作, Alice 先手 。总共有 nnn 个石子排成一行。轮到某个玩家的回合时,如果石子的数目大于 1 ,他将执行以下操作:选择一个整数$ x > 1$ ,并且 移除 最左边的 xxx 个石子。将移除的石子价值之和累加到该玩家的分数中。将一个新的石子放在最左边,且新石子的值为被移除石子值之和。当只剩下一个 石子时,游戏结束。Alice 和 Bob 的 分数之差 为 (Alice 的分数 - Bob 的分数) 。 Alic

2021-05-25 19:49:18 264

原创 leetcode面试题 05.04 下一个数

下一个数。给定一个正整数,找出与其二进制表达式中1的个数相同且大小最接近的那两个数(一个略大,一个略小)。示例1: 输入:num = 2(或者0b10) 输出:[4, 1] 或者([0b100, 0b1])示例2: 输入:num = 1 输出:[2, -1]提示:num的范围在[1, 2147483647]之间;如果找不到前一个或者后一个满足条件的正数,那么输出 -1。本题知识点在于位运算,熟悉位运算能较快解题。如何取大一点的数:从右向左遍历num二进制表达式,将第一次出现

2021-05-08 09:28:30 209 1

原创 python 多进程中的变量问题.

最近写python程序,发现python的for循环太慢了,希望能通过多进程加速,加快程序速度。程序功能:期望把每一次循环的结果都保存在一个字典dict里,但是实际输出发现字典是空的,程序功能类似如下:import torchimport torch.nn as nnimport timeimport multiprocessingMP = {}def putone(x): a,b=x[0],x[1] b[a]=2*a MP[a] = 2*aif __nam

2021-05-04 17:39:03 1296

原创 leetcode403 青蛙过河

403. 青蛙过河一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能选择为 k - 1、k 或 k + 1

2021-04-30 22:33:52 109

原创 PyTorch nn.MultiHead() 参数理解

之前一直是自己实现MultiHead Self-Attention程序,代码段又臭又长。后来发现Pytorch 早已经有API nn.MultiHead()函数,但是使用时我却遇到了很大的麻烦。首先放上官网说明:MultiHead(Q,K,V)=Concat(head1,…,headh)WOwhere headi=Attention(QWiQ,KWiK,VWiV)MultiHead(Q,K,V)=Concat(head_1,…,head_h)W_O\quad where\ hea

2021-02-22 22:21:56 9858

原创 leetcode410. 分割数组的最大值

410. 分割数组的最大值给定一个非负整数数组 nums和一个整数 m ,你需要将这个数组分成 m个非空的连续子数组。设计一个算法使得这 m个子数组各自和的最大值最小。示例 1:输入:nums = [7,2,5,10,8], m = 2输出:18解释:一共有四种方法将 nums 分割为 2 个子数组。 其中最好的方式是将其分为 [7,2,5] 和 [10,8] 。因为此时这两个子数组各自的和的最大值为18,在所有情况中最小。示例 2:输入:nums = [1,2,3,4,5], m =

2021-02-21 23:15:52 127

原创 BPRMF算法(Pytorch实现)

1. 写作目的​ 首先感叹一下推荐系统的子领域是这么的丰富,可以有召回阶段的传统推荐、精排阶段的CTR、序列化推荐、对话推荐、推荐系统与图神经网络结合、推荐系统与知识图谱结合、推荐系统与NAS技术结合。论文看得眼花缭乱,慕然回首,发现自己根本没入门。​ BPR算法是基础的推荐算法,在我入门推荐系统时很容易理解BPR算法,但是当我想实现完整的推荐算法时,却困难重重,如何加载数据,如何进行负采样,如何写评价指标函数,让我很烦恼。参照王翔老师的NGCF算法 Tensorflow版 和 PyTorch版 自己

2021-02-19 16:14:26 3921 5

原创 leetcode 1760. 袋子里最少数目的球

题目:给你一个整数数组 nums ,其中 nums[i] 表示第 i 个袋子里球的数目。同时给你一个整数** maxOperations** 。你可以进行如下操作至多 maxOperations 次:选择任意一个袋子,并将袋子里的球分到 2 个新的袋子中,每个袋子里都有正整数个球。比方说,一个袋子里有5个球,你可以把它们分到两个新袋子里,分别有1个和 4 个球,或者分别有 2 个和 3 个球。你的开销是单个袋子里球数目的最大值 ,你想要最小化开销。请你返回进行上述操作后的最小开销。示例:输入

2021-02-16 23:28:05 256

原创 Amazon Review Dataset数据集介绍

Amazon Review Dataset数据集记录了用户对亚马逊网站商品的评价,是推荐系统的经典数据集,并且Amazon一直在更新这个数据集,根据时间顺序,Amazon数据集可以分成三类:2013 版 https://nijianmo.github.io/amazon/index.html2014版 http://jmcauley.ucsd.edu/data/amazon/index_2014.html2018版 http://snap.stanford.edu/data/web-Amazon-

2021-01-29 22:25:05 23479 11

原创 推荐系统TOP-K指标AUC和CTR指标AUC的异同

推荐系统可以分为两个阶段:召回阶段,即TOP-K任务精排阶段,即CTR任务召回阶段是为每一个用户在成千上万的待选item中推荐排名前K个的候选item精排阶段是对在召回阶段的K个的候选item的基础上,预测特定的user点击特定的item的概率,此结果对广告商精准投放广告产生直接影响,直接关系着广告的盈利。我读了一些召回TOP-K的论文和CTR论文,发现TOP-K指标的AUC和CTR指标AUC稍有不同:...

2021-01-27 23:30:35 1727

原创 服务器配置远程连接jupyter-notebook踩坑指南

为什么要远程连接服务器jupyter-notebook:1.有些很大的数据集,动则10G,20G,自己的笔记本内存吃不消2.服务器上的CPU、GPU计算能力往往比自己电脑要好不少配置流程:注:因为服务器是很多人共用,而且比如服务器固态硬盘home文件夹空间小,机械硬盘data盘空间大。如果把虚拟conda环境配置在home下,一旦home盘满了,我的虚拟conda就启动不了了,所以这次配置我是先把虚拟conda环境布置在data盘,然后再配置jupyter-notebook一、创建.

2020-12-24 17:32:28 812 1

原创 numpy 与 torch中压缩、扩展维度的方法

写了一段时间的torch,发现torch与numpy的函数非常像,使用起来非常方便。今天发现 numpy 与 torch中压缩、扩展维度的方法稍有不同。torch 压缩、扩展维度:# 扩展维度使用unsqueeze()A = torch.ones(8,8)A = A.unsqueeze(2)A = torch.unsqueeze(A,2)# 压缩维度使用squeeze()A = torch.ones(8,8,1)A = A.squeeze(-1)A = torch.squeez

2020-12-12 20:28:07 2497 1

原创 Python List列表合并

最近写程序,有一段代码涉及到Python List列表合并,一开始采用 A=A+B实现,结果耗时非常严重,效率十分低下。后面换用了 A.extend(B),效率提升了100倍。A=[]#L形式 [[1,2,3],[1,2],[4,5],[11,12,13,14]....]for B in L: A = A+B#效率低下A=[]#L形式 [[1,2,3],[1,2],[4,5],[11,12,13,14]....]for B in L: A.extend...

2020-09-17 09:35:34 269

原创 DeepFM Pytorch实现(Criteo数据集验证)

本文主要任务是利用Pytorch实现DeeoFM模型,并在将模型运行在Criteo数据集上进行验证测试。DeepFM模型简述 FM模型善于挖掘二阶特征交叉关系,而神经网络DNN的优点是能够挖掘高阶的特征交叉关系,于是DeepFM将两者组合到一起,实验证明DeepFM比单模型FM、DNN效果好。DeepFM相当于同时组合了原Wide部分+二阶特征交叉部分+Deep部分三种结构,无疑进一步增强了模型的表达能力。数据集介绍和运行环境运行环境:python 3.6、...

2020-08-24 20:20:37 7389 18

原创 Mean Percentage Ranking (MPR) 实现

Mean Percentage Ranking (MPR) 是推荐系统的一个常用的评估函数,在IMF和LMF论文中都使用这一评价指标。 mpr实现:import numpy as npdef MPR(R_hat,R): ''' :param R_hat: user dot item :param R: ratting ...

2020-06-20 21:00:24 693

原创 C++面试题精简整理

1.class、struct区别: C++中完全可以删除struct关键字,保留struct关键字是为了兼容C。class和struct地唯一区别:class默认域是private,struct默认域是public。现在C++编程常使用struct作为一个组合。例如struct Combination{ int first; int second;};2.new 和malloc的区别:new的底层是由malloc实现的。主要区别:(1)malloc是标准函数,new...

2020-05-26 17:20:02 2108

原创 Johnson算法寻找图中的所有简单环路

Johnson算法论文:https://www.cs.tufts.edu/comp/150GA/homeworks/hw1/Johnson%2075.PDFJohnson算法讲解视频:https://www.youtube.com/watch?v=johyrWospv0C++实现代码:#include <iostream>#include<vector>#include<map>#include<cstring>using namespa

2020-05-22 22:42:51 2723 4

原创 pandas 列赋值问题

df1['A']=df2['flag'] 是pandas数据处理常用的一种列赋值的方法。今天在进行列赋值时,发现处理后的结果不符合预期。查阅了一些资料,df1['A']=df2['flag']不是直接整列赋值的,而是根据索引index的映射来进行赋值的。df1,df2两个表的index如果不相同会出现NA空值的情况。特别是 df1是按照某列groupby处理后的表,df2保持着原来...

2020-04-02 20:01:51 5057 1

原创 xgboost,lightgbm权值图

如果列名包含汉字,需要设置字体import lightgbm as lgbimport xgboost as xgbfrom matplotlib import pyplot as plt####lgb,xgb训练完成后............#设置字体plt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes....

2020-03-19 20:50:14 334

原创 狗屁不通的一首诗

近来心情比较压抑,感觉自己就是一个心想事不成的人。写一首不押韵的诗,表达自己的憧憬和现在的糟糕状态。我有一台智能计算机,上面有我数据比赛冠军的纪录我可以写一段LPA算法来定位失去联系的亲人用C++new一个对象陪着我,再delete掉母亲的眼泪再用sklearn调出一棵决策树,提供人生的指引再写一段回溯算法,让我回到那一天,那一天用js画一个太阳,温暖她的白夜...

2019-05-07 22:43:45 713

原创 OS小结

常见的批处理作业调度算法1.先来先服务调度算法(FCFS):就是按照各个作业进入系统的自然次序来调度作业。这种调度算法的优点是实现简单,公平。其缺点是没有考虑到系统中各种资源的综合使用情况,往往使短作业的用户不满意,因为短作业等待处理的时间可能比实际运行时间长得多。2.短作业优先调度算法(SPF): 就是优先调度并处理短作业,所谓短是指作业的运行时间短。而在作业未投入运行时,并不能知道它实...

2019-02-27 22:44:58 239

原创 PAT 1013求解——记一次艰难的AC过程

1013 Battle Over Cities (25 分)It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/toward that city are closed. We...

2019-02-20 22:23:51 291

原创 缓冲管理

为了缓和CPU与I/O设备速度不匹配的矛盾,提高它们之间的并行性,在现代计算机系统中,几乎所有的I/O设备在与CPU交换数据时,都用了缓冲区。缓冲管理的主要职责是组织好这些缓冲区,并向进程提供获得和释放缓冲区的手段。缓冲机制的作用:1)缓和CPU和I/O设备间速度不匹配的矛盾 2)减少对CPU 的中断频率 3)提高CPU和I/O设备的并行性可以通过下面这个例子分析缓冲区对CPU中断频率和响...

2019-01-11 10:53:19 2210

原创 磁盘结构以及磁盘访问时间(柱面 磁头 扇区)

   磁盘容量大,价格低,存取速度快,断电信息后不丢失,可随机存取,因此成为计算机系统中最主要的文件存储设备。磁盘系统的可靠性及其I/O速度的高低,将直接影响到文件操作的效率。1)盘面磁盘每一个盘片都有两个盘面,即上、下两个盘面,都可以用来存储数据。每一个有效盘面都有一个盘面号。在硬磁盘系统中,盘面号又叫磁头号,因为每一个有效盘面都有一个对应的读写磁头。2)磁道、扇区下图显示的...

2019-01-01 21:45:47 10201

原创 OS 杂七杂八

为了准备期末的操作系统考试,在此记录一些笔记。1.计算机系统和操作系统计算机系统由2部分组成:1.计算机硬件(CPU,存储器等)2.计算机软件(指令集合等)。而操作系统是计算机硬件和其他软件以及计算机用户之间的关系纽带。2.磁盘访问时间Ta=寻道时间Ts+旋转延迟时间Tr+传输时间Tt3.进程是拥有资源的基本单元,线程是调度和执行的基本单元4.进程通信方式...

2018-12-09 20:51:02 223

空空如也

空空如也

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

TA关注的人

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