![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
计算机编程
文章平均质量分 54
springtostring
这个作者很懒,什么都没留下…
展开
-
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 · 4372 阅读 · 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 · 6555 阅读 · 0 评论 -
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 · 432 阅读 · 0 评论 -
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 · 881 阅读 · 0 评论 -
leetcode1081. 不同字符的最小子序列
1081. 不同字符的最小子序列返回 s 字典序最小的子序列,该子序列包含 s 的所有不同字符,且只包含一次。示例 1:输入:s = “bcabc”输出:“abc”示例 2:输入:s = “cbacdcbc”输出:“acdb”1 <= s.length <= 1000s 由小写英文字母组成本题与316. 去除重复字母是一样的题目。如果没有接触过单调栈很难掌握本道题,看过一遍题解代码后,再做一次还是不会。如果只是知道最简单的单调栈,那么自己写这道题也会比较难原创 2021-08-18 22:30:48 · 290 阅读 · 0 评论 -
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 · 214 阅读 · 0 评论 -
算法导论 编辑距离
编辑距离是动态规划算法学习的经典问题。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 · 416 阅读 · 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 · 864 阅读 · 0 评论 -
leetcode 1872. 石子游戏VIII
1872. 石子游戏 VIIIAlice 和 Bob 玩一个游戏,两人轮流操作, Alice 先手 。总共有 nnn 个石子排成一行。轮到某个玩家的回合时,如果石子的数目大于 1 ,他将执行以下操作:选择一个整数$ x > 1$ ,并且 移除 最左边的 xxx 个石子。将移除的石子价值之和累加到该玩家的分数中。将一个新的石子放在最左边,且新石子的值为被移除石子值之和。当只剩下一个 石子时,游戏结束。Alice 和 Bob 的 分数之差 为 (Alice 的分数 - Bob 的分数) 。 Alic原创 2021-05-25 19:49:18 · 289 阅读 · 0 评论 -
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 · 235 阅读 · 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 · 1328 阅读 · 0 评论 -
leetcode403 青蛙过河
403. 青蛙过河一只青蛙想要过河。 假定河流被等分为若干个单元格,并且在每一个单元格内都有可能放有一块石子(也有可能没有)。 青蛙可以跳上石子,但是不可以跳入水中。给你石子的位置列表 stones(用单元格序号 升序 表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一块石子上)。开始时, 青蛙默认已站在第一块石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格 1 跳至单元格 2 )。如果青蛙上一步跳跃了 k 个单位,那么它接下来的跳跃距离只能选择为 k - 1、k 或 k + 1原创 2021-04-30 22:33:52 · 116 阅读 · 0 评论 -
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 · 10410 阅读 · 0 评论 -
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 · 2522 阅读 · 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 · 280 阅读 · 0 评论 -
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 · 346 阅读 · 0 评论 -
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 · 296 阅读 · 0 评论