此笔记为阿里云天池机器学习训练营笔记,学习地址:https://tianchi.aliyun.com/s/1fc36a7e103eb9948c974f638e83a83b感谢教程及阿里云提供平台
一、赛题说明赛题使用公开数据的问卷调查结果,选取其中多组变量,包括个体变量(性别、年龄、地域、职业、健康、婚姻与政治面貌等等)、家庭变量(父母、配偶、子女、家庭资本等等)、社会态度(公平、信用、公共服务等等),来预测其对幸福感的评价。
二、数据说明考虑到变量个数较多,部分变量间关系复杂,数据分为完整版和精简版两类。先从精简版入手熟悉赛题后,使用完整版挖掘更多信息。complete文件为变量完整版数据,abbr文件为变量精简版数据。index文件中包含每个变量对应的问卷题目,以及变量取值的含义。survey文件是数据源的原版问卷,作为补充以方便理解问题背景。
总计共有6个文件,[点击查看](Happinese_survey | Kaggle)
这里我们就直接上手完整版数据集了
三、 数据预处理将测试集连接在一起
12# 将train和test连在一起data = pd.concat([train ...
此笔记为阿里云天池机器学习训练营笔记,学习地址:https://tianchi.aliyun.com/s/1fc36a7e103eb9948c974f638e83a83b感谢教程及阿里云提供平台
1.学习知识点概要XGBoost是什么XGBoost是2016年由华盛顿大学陈天奇老师带领开发的一个可扩展机器学习系统。严格意义上讲XGBoost并不是一种模型,而是一个可供用户轻松解决分类、回归或排序问题的软件包。它内部实现了梯度提升树(GBDT)模型,并对模型中的算法进行了诸多优化,在取得高精度的同时又保持了极快的速度,在一段时间内成为了国内外数据挖掘、机器学习领域中的大规模杀伤性武器。
优点:
简单易用。相对其他机器学习库,用户可以轻松使用XGBoost并获得相当不错的效果。
高效可扩展。在处理大规模数据集时速度快效果好,对内存等硬件资源要求不高。
鲁棒性强。相对于深度学习模型不需要精细调参便能取得接近的效果。
XGBoost内部实现提升树模型,可以自动处理缺失值。
缺点:
相对于深度学习模型无法对时空位置建模,不能很好地捕获图像、语音、文本等高维数据。
在拥有海量训练数据,并能找 ...
此笔记为阿里云天池机器学习训练营笔记,学习地址:https://tianchi.aliyun.com/s/1fc36a7e103eb9948c974f638e83a83b感谢教程及阿里云提供平台
1.学习内容概括lightGBM是什么
LightGBM是2017年由微软推出的可扩展机器学习系统,是微软旗下DMKT的一个开源项目,由2014年首届阿里巴巴大数据竞赛获胜者之一柯国霖老师带领开发。它是一款基于GBDT(梯度提升决策树)算法的分布式梯度提升框架,为了满足缩短模型计算时间的需求,LightGBM的设计思路主要集中在减小数据对内存与计算性能的使用,以及减少多机器并行计算时的通讯代价。
LightGBM可以看作是XGBoost的升级豪华版,在获得与XGBoost近似精度的同时,又提供了更快的训练速度与更少的内存消耗。正如其名字中的Light所蕴含的那样,LightGBM在大规模数据集上跑起来更加优雅轻盈,一经推出便成为各种数据竞赛中刷榜夺冠的神兵利器。
优点:
简单易用。提供了主流的Python\C++\R语言接口,用户可以轻松使用LightGBM建模并获得相当不错的效果。
高效可 ...
此笔记为阿里云天池机器学习训练营笔记,学习地址:https://tianchi.aliyun.com/s/1fc36a7e103eb9948c974f638e83a83b感谢教程及阿里云提供平台
一、学习知识点概要1.什么是逻辑回归逻辑回归(Logistic regression,简称LR)逻辑回归是一个分类模型,并且广泛应用于各个领域之中,其最为突出的两点就是其模型简单和模型的可解释性强。
逻辑回归模型的优劣势:优点:实现简单,易于理解和实现;计算代价不高,速度很快,存储资源低;缺点:容易欠拟合,分类精度可能不高
2.逻辑回归的应用场景逻辑回归模型广泛用于各个领域,包括机器学习,大多数医学领域和社会科学。
例如:疾病的分析和预测(糖料病、冠心病等)、市场的营销预测(预测客户购买产品或中止订购的倾向等)、贷款拖欠可能、推荐算法、医疗诊断等等,可见逻辑回归应用的领域还是颇为广泛的。
二、学习内容学习目标
了解 逻辑回归 的理论
掌握 逻辑回归 的 sklearn 函数调用使用并将其运用到鸢尾花数据集预测
常用函数以下为sklearn.linear_model.LgisticRegres ...
给你一个二叉树的根节点 root , 检查它是否轴对称。
示例 1:
12输入:root = [1,2,2,3,4,4,3]输出:true
示例 2:
12输入:root = [1,2,2,null,3,null,3]输出:false
提示:
树中节点数目在范围 [1, 1000] 内
-100 <= Node.val <= 100
12345 2 2 / \ / \ 3 4 4 3 / \ / \ / \ / \8 7 6 5 5 6 7 8
终止条件:
left 和 right 不等,或者 left 和 right 都为空递归的比较 left,left 和 right.right,递归比较 left,right 和 right.left
解法1:递归使用递归比较简单直接:
123456789101112class Solution { public boolean isSymmetric(TreeNode root) { return check(ro ...
给定一个二叉树 root ,返回其最大深度。
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。
示例 1:
12输入:root = [3,9,20,null,null,15,7]输出:3
示例 2:
12输入:root = [1,null,2]输出:2
提示:
树中节点的数量在 [0, 104] 区间内。
-100 <= Node.val <= 100
解法:递归123456789class Solution { public int maxDepth(TreeNode root) { if (root == null)return 0; int leftDepth = maxDepth(root.left); int rightDepth = maxDepth(root.right); return Math.max(leftDepth,rightDepth) + 1; }}
解法:迭代(广度优先搜索)每一次迭代都删去上一层的所有 ...
131. 分割回文串
给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串
。返回 s 所有可能的分割方案。
示例 1:
12>输入:s = "aab"输出:[["a","a","b"],["aa","b"]]
示例 2:
12>输入:s = "a"输出:[["a"]]
提示:
1 <= s.length <= 16
s 仅由小写英文字母组成
回溯法:
1234567891011121314151617181920212223class Solution(object): def partition(self, s): """ :type s: str :rtype: List[List[str]] """ ans = [] ...
121. 买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。
你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。
示例 1:
1234输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。
示例 2:
123输入:prices = [7,6,4,3,1]输出:0解释:在这种情况下, 没有交易完成, 所以最大利润为 0。
提示:
1 <= prices.length <= 105
0 <= prices[i] <= 104
本题使用暴力破解同样可以获取答案,但是需要消较多的资源且容易超时,所以这道题目需要考虑如何去减少计算中的各 ...
刷题笔记
未读136. 只出现一次的数字
给你一个 非空 整数数组 nums ,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例 1 :
12输入:nums = [2,2,1]输出:1
示例 2 :
12输入:nums = [4,1,2,1,2]输出:4
示例 3 :
12输入:nums = [1]输出:1
提示:
1 <= nums.length <= 3 * 104
-3 * 104 <= nums[i] <= 3 * 104
除了某个元素只出现一次以外,其余每个元素均出现两次。
解法1:使用哈希表利用 Hash 表,Time: O(n) Space: O(n)
123456789101112131415class Solution { public int singleNumber(int[] nums) { Map<Integer, Integer> map = new HashMap< ...
141. 环形链表
给你一个链表的头节点 head ,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回 true 。 否则,返回 false 。
示例 1:
1234输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。
示例 2:
123输入:head = [1,2], pos = 0输出:true解释:链表中有一个环,其尾部连接到第一个节点。
示例 3:
123输入:head = [1], pos = -1输出:false解释:链表中没有环。
提示:
链表中节点的数目范围是 [0, 104]
-105 <= Node.val <= 105
pos 为 -1 或者链表中的一个 有效索引 。
进阶:你能用 O(1)(即,常量)内存解决此问题吗? ...