LightGBM使用小结

最近在参加一些数据竞赛,诸如腾讯校园算法大赛和蚂蚁金服风险识别大赛,在参赛的过程中,发现原生的LightGBM比sklearn接口的LIghtGBM方便的不要太多。因此,趁此之际,总结一波。

数据接口

加载numpy数组到Dataset中:
1
2
3
4
5
# 500个样本,每一个包含10个特征
data = np.random.rand(500, 10)
# 二元目标变量,0和1
label = np.random.randint(2, size=500)
train_data = lgb.Dataset(data, label=label)

查看更多

Compartir Comentarios

dp系列之子集系列

1. 子集

题目详情

给定一个含不同整数的集合,返回其所有的子集
样例:
如果 S = [1,2,3],有如下的解:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]

查看更多

Compartir Comentarios

链表系列之linked-list-cycle

链表是否有环 I

题目详情

Given a linked list, determine if it has a cycle in it.

Follow up:
Can you solve it without using extra space?

思路:

  • 快慢指针,若快慢指针能相遇则说明链表存在环

查看更多

Compartir Comentarios

二叉树系列之zigzag打印二叉树

题目详情

给出一棵二叉树,返回其节点值的锯齿形层次遍历(先从左往右,下一层再从右往左,层与层之间交替进行)

样例:
给出一棵二叉树 {3,9,20,#,#,15,7},

1
2
3
4
5
3
/ \
9 20
/ \
15 7

返回其锯齿形的层次遍历为:

1
2
3
4
5
[
[3],
[20,9],
[15,7]
]

思路:

  • 广度优先遍历
  • 设置flag,看是正序还是逆序,决定如何加入list
    • 若是正序:list.add(node.val)
    • 若是逆序:list.add(0, node.val)

查看更多

Compartir Comentarios

dp系列之房屋染色

房屋染色

这里有n个房子在一列直线上,现在我们需要给房屋染色,分别有红色蓝色和绿色。每个房屋染不同的颜色费用也不同,你需要设计一种染色方案使得相邻的房屋颜色不同,并且费用最小。
费用通过一个nx3 的矩阵给出,比如cost[0][0]表示房屋0染红色的费用,cost[1][2]表示房屋1染绿色的费用。

样例:
costs = [[14,2,11],[11,14,5],[14,3,10]] return 10
房屋 0 蓝色, 房屋 1 绿色, 房屋 2 蓝色, 2 + 5 + 3 = 10

查看更多

Compartir Comentarios

深搜系列之分割字符串

题目详情

给一个字符串,你可以选择在一个字符或两个相邻字符之后拆分字符串,使字符串由仅一个字符或两个字符组成,输出所有可能的结果

样例:
给一个字符串”123”
返回[[“1”,”2”,”3”],[“12”,”3”],[“1”,”23”]]

查看更多

Compartir Comentarios

深搜系列之字符串全组合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.ArrayList;
public class FullCombination {
public static void main(String[] args) {
ArrayList<String> result = new ArrayList<>();
helper(result, "abc", new StringBuilder(), 0);
for (String s : result)
System.out.println(s);
}
private static void helper(ArrayList<String> result, String s, StringBuilder sb, int index) {
for (int i = index; i < s.length(); i++) {
sb.append(s.charAt(i));
result.add(sb.toString());
helper(result, s, sb, i + 1);
sb.deleteCharAt(sb.length() - 1);
}
}
}
Compartir Comentarios

dp系列之编辑距离

编辑距离

题目详情

给出两个单词word1和word2,计算出将word1 转换为word2的最少操作次数。

你总共三种操作方法:

  • 插入一个字符
  • 删除一个字符
  • 替换一个字符

样例:
给出 work1=”mart” 和 work2=”karma”
返回 3

查看更多

Compartir Comentarios

寻找旋转排序数组中的最小值

题目详情

假设一个旋转排序的数组其起始位置是未知的(比如0 1 2 4 5 6 7 可能变成是4 5 6 7 0 1 2)。

你需要找到其中最小的元素。

你可以假设数组中不存在重复的元素。

查看更多

Compartir Comentarios

高频面试题总结之链表排序

由于链表数据结构的特殊性,其实基于交换的排序算法已经不适用了,比较适用的是插入排序和归并排序。下面分别展示具体的求解思路。

题目详情

Sort a linked list in O(n log n) time using constant space complexity.

查看更多

Compartir Comentarios