- 博客(259)
- 资源 (9)
- 收藏
- 关注
原创 DataWhale西瓜书(周志华《机器学习》)精读05
第六章 神经网络6.1 间隔与支持向量如上图所示,间隔与支持向量解释为:支持向量:距离超平面最近的样本点间隔:两个不同种类支持向量到超平面的距离之和支持向量机(SVM)就是要寻找具有最大间隔的超平面划分超平面可通过如下线性方程来描述:ωTx+b=0\omega ^ Tx + b = 0ωTx+b=0间隔可表示为:γ=2∥ω∥\gamma = \frac{2}{\left \| \omega \right \| } γ=∥ω∥2SVM的基本型:maxw,b2∥ω∥ s.
2021-07-30 00:55:28
588
原创 DataWhale西瓜书(周志华《机器学习》)精读04
第五章 神经网络5.1 神经元模型分而治之5.1.1 神经网络定义定义:神经网络是由 适应性的简单单元 组成的广泛并行互连的网络,他的组织能够 模拟 生物神经系统对真实世界物体所作出的 交互反应 。神经网络是一种目前广泛使用的一种机器学习方法,机器学习中提到的神经网络指的是“神经网络学习”,或者说,是机器学习与神经网络这两个学科领域的交叉部分。5.1.2 生物神经网络的神经元结构神经网络中最基本的成分是神经元(neuron)模型,即定义中的“简单单元”。要让机器像人一样学习,首先要了解大
2021-07-26 00:48:50
486
原创 DataWhale西瓜书(周志华《机器学习》)精读03
第四章 决策树4.1 基本流程一颗决策树包含一个根结点、若干个叶节点和若干个非叶子节点根结点包含样本全集基本流程遵循 分而治之三种导致递归返回的情况:当前结点包含的样本属于同一类(当前属性相同,比如都是脆的西瓜);当前属性集为空或只有一类(所有属性相同或当前属性为空,大脆西瓜);当前结点包含的样本集合为空(n = 0)情况2,max(该属性)的样本情况3,max(父节点)的样本4.2 划分选择这节讲解如何生成一颗决策树,主要有三个指标:4.2.1 信息增益ID3分别用下式计算
2021-07-23 01:24:16
726
1
原创 【Leetcode】3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
一、题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。二、示例提示0 <= s.length <= 5 * 104s 由英文字母、数字、符号和空格组成三、解法解法-滑动窗口#时间:O(n)#空间:O(n)class Solution: def lengthOfLongestSubstring(self, s: str) -> int: n = len(s) if n < 2:
2021-07-21 23:35:06
222
1
原创 【Leetcode】26. 删除有序数组中的重复项(Remove Duplicates from Sorted Array)
一、题目给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。二、示例说明三、解法解法-双指针(同向)#时间:O(n)#空间:O(1)class Solution: def removeDuplicates(self, nums: List[int]) -> int: #有序 n = le
2021-07-21 00:35:29
171
原创 【Leetcode】153. 寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted Array)
一、题目已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]注意,数组 [a[0], a[1], a[2], …, a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], …, a[n-2]] 。给你一个元素值 互不相同 的数
2021-07-21 00:06:57
221
原创 【Leetcode】119. 杨辉三角 II(Pascal‘s Triangle II)
一、题目给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行。在杨辉三角中,每个数是它左上方和右上方的数的和。二、示例三、解法解法-迭代法#时间:O(n^2)#空间:O(k)class Solution: def getRow(self, rowIndex: int) -> List[int]: def generateRow(last): return [1] + [last[i-1] + last[i] for i
2021-07-20 23:06:13
235
原创 【Leetcode】283. 移动零(Move Zeroes)
一、题目给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。二、示例说明必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。三、解法解法-双指针(同向)#时间:O(n)#空间:O(1)class Solution: def moveZeroes(self, nums: List[int]) -> None: """ Do not return anything, modify nums i
2021-07-20 18:49:26
167
原创 【Leetcode】118. 杨辉三角(Pascal‘s Triangle)
一、题目给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。二、示例三、解法解法-迭代法#时间:O(n^2)#空间:O(n^2)class Solution: def generate(self, numRows: int) -> List[List[int]]: def generateNewRow(last): return [last[i-1]+last[i]
2021-07-20 18:10:20
193
原创 【Leetcode】485. 最大连续 1 的个数(Max Consecutive Ones)
一、题目给定一个二进制数组, 计算其中最大连续 1 的个数。二、示例提示输入的数组只包含 0 和 1 。输入数组的长度是正整数,且不超过 10,000。三、解法解法-双指针法(同向)#时间:O(n)#空间:O(1)class Solution: def findMaxConsecutiveOnes(self, nums: List[int]) -> int: def returnMax(now,fast,slow): temp
2021-07-20 17:21:50
208
原创 【Leetcode】27. 移除元素(Remove Element)
一、题目给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。二、示例说明提示0 <= nums.length <= 1000 <= nums[i] <= 500 <= val <= 100三、解法解法-双指针(同向)#时间:O(n)#空间
2021-07-20 16:44:55
260
原创 【Leetcode】561. 数组拆分 I(Array Partition I)
一、题目给定长度为 2n 的整数数组 nums ,你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), …, (an, bn) ,使得从 1 到 n 的 min(ai, bi) 总和最大。返回该 最大总和 。二、示例提示1 <= n <= 104nums.length == 2 * n-104 <= nums[i] <= 104三、解法解法-贪心法在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法
2021-07-20 12:11:32
212
原创 DataWhale西瓜书(周志华《机器学习》)精读02
第三章 线性模型3.1 基本形式f(x)=ω1x1+ω2x2+...+ωdxd+bf(x) = \omega _{1}x_{1} + \omega _{2}x_{2} + ... + \omega _{d}x_{d} +bf(x)=ω1x1+ω2x2+...+ωdxd+b其中,ωi\omega_{i}ωi和b表示线性模型的参数,需要由训练过程确定。向量模式:f(x)=ωTx+bf(x) = \omega ^{T}x+bf(x)=ωTx+b3.2 线性回归f(xi)=ωxi+b,使
2021-07-20 01:07:26
242
1
原创 【Leetcode】28. 实现 strStr()(Implement strStr())
一、题目实现 strStr() 函数。给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串出现的第一个位置(下标从 0 开始)。如果不存在,则返回 -1 。说明当 needle 是空字符串时,我们应当返回什么值呢?这是一个在面试中很好的问题。对于本题而言,当 needle 是空字符串时我们应当返回 0 。这与 C 语言的 strstr() 以及 Java 的 indexOf() 定义相符。二、示例提示0 <= hays
2021-07-19 17:05:02
229
3
原创 【Leetcode】498. 对角线遍历(Diagonal Traverse)
一、题目给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。二、示例说明给定矩阵中的元素总数不会超过 100000 。三、解法解法-暴力法#时间:O(mn)#空间:O(max(m,n))class Solution: def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]: def addLine(length,ty
2021-07-17 14:11:31
227
原创 【Leetcode】面试题 01.08. 零矩阵(Zero Matrix)
一、题目编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。二、示例三、解法解法-辅助空间#时间:O(n^2)#空间:O(n^2)class Solution: def setZeroes(self, matrix: List[List[int]]) -> None: """ Do not return anything, modify matrix in-place instead. """
2021-07-17 12:24:57
598
2
原创 DataWhale西瓜书(周志华《机器学习》)精读01
第一章 绪论1.1 引言算法计算机科学是研究关于 算法 的学问机器学习是研究关于 学习算法 的学问1.2 基本术语以 西瓜 为例:术语例子instance or sample or feature vector对一个 西瓜 的描述attribute or feature西瓜 的特点attribute value西瓜 某个特点的类型attribute space or sample space西瓜 特点存在的空间维数d西瓜 的特点种类数量
2021-07-14 01:18:47
407
1
原创 Linux-Centos7下安装Anaconda
一、下载Anaconda使用清华镜像:Tsinghua Open Source Mirrorwget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-2021.05-Linux-x86_64.sh二、安装Anacondabash Anaconda3-2021.05-Linux-x86_64.sh一路Enter或者yes:三、添加conda环境变量vi ~/.bashrcexport PATH="你
2021-06-15 11:18:04
304
1
原创 集成学习案例二之蒸汽量预测
一、案例资料1.背景介绍火力发电的基本原理是:燃料在燃烧时加热水生成蒸汽,蒸汽压力推动汽轮机旋转,然后汽轮机带动发电机旋转,产生电能。在这一系列的能量转化中,影响发电效率的核心是锅炉的燃烧效率,即燃料燃烧加热水产生高温高压蒸汽。锅炉的燃烧效率的影响因素很多,包括锅炉的可调参数,如燃烧给量,一二次风,引风,返料风,给水水量;以及锅炉的工况,比如锅炉床温、床压,炉膛温度、压力,过热器的温度等。我们如何使用以上的信息,根据锅炉的工况,预测产生的蒸汽量,来为我国的工业届的产量预测贡献自己的一份力量呢?所以,该
2021-05-24 00:19:58
506
原创 Matplotlib学习之初相识
一、前言Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。Matplotlib是Python数据可视化库中的泰斗,它已经成为python中公认的数据可视化工具,我们所熟知的pandas和seaborn的绘图接口其实也是基于matplotlib所作的 高级封装。二、简单的绘图例子1.单张子图import matplotlib.pyplot as pltimport numpy as np# 创建一个包含一个axes的fig
2021-05-22 00:15:32
202
1
原创 集成学习案例一之幸福感预测
一、案例资料1.背景介绍幸福感是一个古老而深刻的话题,是人类世代追求的方向。与幸福感相关的因素成千上万、因人而异,大如国计民生,小如路边烤红薯,都会对幸福感产生影响。这些错综复杂的因素中,我们能找到其中的共性,一窥幸福感的要义吗?另外,在社会科学领域,幸福感的研究占有重要的位置。这个涉及了哲学、心理学、社会学、经济学等多方学科的话题复杂而有趣;同时与大家生活息息相关,每个人对幸福感都有自己的衡量标准。如果能发现影响幸福感的共性,生活中是不是将多一些乐趣;如果能找到影响幸福感的政策因素,便能优化资源配置
2021-05-19 01:49:55
375
原创 集成学习之Stacking
一、Stacking思想和主要步骤Stacking可以理解成升级版的Blending,关键在于它使用了“Cross-validation”对训练集进行处理。首先我们会得到两组数据:训练集和测试集。将训练集分成5份:train1,train2,train3,train4,train5。选定基模型。这里假定我们选择了xgboost, lightgbm 和 randomforest 这三种作为基模型。比如xgboost模型部分:依次用train1,train2,train3,train4,train
2021-05-14 00:48:19
2619
2
原创 集成学习之Blending
一、Blending思想和主要步骤简单来说,就是“它山之石可以攻玉”。将数据划分为训练集和测试集,其中训练集需要再次划分为训练集(train_set)和验证集(val_set);创建第一层的多个模型,这些模型可以使同质的也可以是异质的;使用train_set和y_train训练步骤2中的多个模型,然后用训练好的模型预测val_set和test_set得到val_predict, test_predict;创建第二层的模型,使用val_predict和y_val作为训练集训练第二层的模型;使用第
2021-05-12 00:39:48
1275
原创 XGBoost算法分析与案例调参实例
一、XgBoost算法1.XgBoost简介xgboost的核心算法思想:不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数,去拟合上次预测的残差;当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数;最后只需要将每棵树对应的分数加起来就是该样本的预测值。xgboost的优势:优化的分布式梯度增强库,旨在实现高效,灵活和便携。2.XgBoost定义事实上,如果不考虑
2021-04-27 00:34:45
1336
3
原创 前向分步算法与梯度提升决策树
一、前向分步算法介绍先介绍前向分布算法(forward stagewise additive modeling)考虑加法模型(additive model)f(x)=∑m=1Mβmb(x;γm)f(x) = \sum_{m=1}^{M}\beta _{m}b(x;\gamma_{m})f(x)=m=1∑Mβmb(x;γm)b(x;γm)b(x;\gamma_{m})b(x;γm)为基函数γm\gamma_{m}γm为基函数的参数βm\beta _{m}βm为基函数的系数在给定训
2021-04-24 00:59:11
527
原创 Boosting的思路与Adaboost算法
一、Boosting方法的基本思路Boosting方法是使用同一组数据集进行反复学习,得到一系列简单模型,然后组合这些模型构成一个预测性能十分强大的机器学习模型,Boosting的特点:boosting的目的是减小bias;对权重进行训练;弱组强Bootsing意为“增强、提升”,首先引入概念:在概率近似正确学习的框架中,弱可学习(weakly learnable):存在一个多项式的学习算法能够学习它,学习的正确率仅比随机猜测略好,那么就称这个概念是弱科学系的;强可学习(strong
2021-04-21 00:54:01
425
1
原创 Bagging的原理和案例分析
前言由上节可知,欲得到泛化性能强的集成,继承中的个体学习器应尽可能相互独立。给定一个训练集,一种可能的做法是对训练样本进行采样,产生出若干个不同的子集,再从每个数据子集中训练处一个基学习器。这样,由于训练数据不同,我们获得的基学习器可望具有比较大的差异。然而,为获得好的集成,我们还希望个体学习器不能太差,则若每个子集采用的数据集完全不同,则需要每个基学习器只用到了一小部分训练数据,这无法保证产生出比较好的基学习器。为了解决这个问题,考虑使用相互有交叠的采样子集。Bagging原理Bagging的
2021-04-18 00:53:33
1169
1
原创 【Leetcode】56. 合并区间(Merge Intervals)
一、题目以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。二、示例示例 1:输入:intervals = [[1,3],[2,6],[8,10],[15,18]]输出:[[1,6],[8,10],[15,18]]解释:区间 [1,3] 和 [2,6] 重叠, 将它们合并为 [1,6].示例 2:输入:intervals = [[1
2021-04-09 22:52:43
205
原创 【Leetcode】724. 寻找数组的中心下标(Search Insert Position)
一、题目给你一个整数数组 nums,请编写一个能够返回数组 “中心下标” 的方法。数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果数组不存在中心下标,返回 -1 。如果数组有多个中心下标,应该返回最靠近左边的那一个。注意:中心下标可能出现在数组的两端。二、示例示例 1:输入:nums = [1, 7, 3, 6, 5, 6]输出:3解释:中心下标是 3 。左侧数之和 (1 + 7 + 3 = 11),右侧数之和 (5 + 6 = 11) ,二者相
2021-04-09 22:44:41
157
原创 【Leetcode】35. 搜索插入位置(Search Insert Position)
一、题目给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。二、示例示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4示例 4:输入: [1,3,5,6], 0输出: 0三、解法解法 双指针二分法#时间:O(logn)#空间:O(1)class Solution:
2021-04-09 22:32:38
120
原创 【Leetcode】209. 长度最小的子数组(Minimum Size Subarray Sum)
一、题目给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0 。二、示例示例 1:输入:target = 7, nums = [2,3,1,2,4,3]输出:2解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4]输出:1
2021-04-04 13:47:27
153
1
原创 【Leetcode】125. 验证回文串(Valid Palindrome)
一、题目给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。二、示例示例 1:输入: “A man, a plan, a canal: Panama”输出: true示例 2:输入: “race a car”输出: false说明:本题中,我们将空字符串定义为有效的回文串。三、解法解法1 提前处理class Solution: def isPalindrome(self, s: str) -> bool: s = [x.lo
2021-04-04 12:18:52
115
原创 【Leetcode】215. 数组中的第K个最大元素(Kth Largest Element in an Array)
一、题目在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。二、示例示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。三、解法解法1 指定初始值from random import randomclass Solution: def f
2021-04-03 00:24:16
162
3
原创 【Leetcode】75. 颜色分类(Sort Colors)
一、题目给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。二、示例示例 1:输入:nums = [2,0,2,1,1,0]输出:[0,0,1,1,2,2]示例 2:输入:nums = [2,0,1]输出:[0,1,2]示例 3:输入:nums = [0]输出:[0]示例 4:输入:nums = [1]输出:[1]提示:n == n
2021-04-01 23:52:49
224
原创 掌握分类模型的评估及超参数调优
前言本章学习分类模型的性能评估及对其模型的超参数进行调优。一、超参数调优依然使用上文提到的Iris数据集,这里不再展开,只列出使用代码:import numpy as npimport pandas as pdfrom sklearn import datasetsiris = datasets.load_iris()X = iris.datay = iris.targetfeatures = iris.feature_namesiris_data = pd.DataFrame(X,c
2021-03-30 01:12:04
603
8
原创 基本的分类模型
前言书接上文,一个完整的机器学习分类项目分为以下步骤:收集数据集并选择合适的特征。选择度量模型性能的指标。选择具体的模型并进行训练以优化模型。评估模型的性能并调参。让我们通过这几个步骤了解一下基本的分类模型。一、收集数据集并选择合适的特征鸢(yuān)尾花Iris Data Set(鸢尾属植物数据集)是历史比较悠久的数据集,它首次出现在著名的英国统计学家和生物学家Ronald Fisher 1936年的论文《The use of multiple measurements in tax
2021-03-28 01:12:27
3795
2
原创 掌握回归模型的评估及超参数调优
一、参数与超参数参数超参数预测时使用用于辅助估计参数从数据中优化而来启发式设置,无法从数据中估计一般不由编程者手动设置(相对可变)通常人工指定(相对不可变)模型内部的一部分模型外部的配置二、网格搜索先介绍一下管道的作用和用法:简化构建变换和模型链的过程,Scikit-Learn提供了pipeline类,可以将多个处理步骤合并为单个Scikit-Learn估计器下面这两种管道构建的方式是等价的:from sklearn.pipeline imp
2021-03-24 23:58:12
2714
原创 偏差与方差理论
前言本次学习内容为优化基础模型。在线性回归中,我们总可以找到一条线来连接所有的测试集,如下图:但往往通过上面这种方式得到的曲线不能很好地反馈在测试集上,原因是产生过拟合等等。接下来让我们举例说明。一、训练均方误差与测试均方误差均方误差(mean-square error, MSE)是反映估计量与被估计量之间差异程度的一种度量:MSE=1N∑i=1N(yi−f^(xi))2MSE = \frac{1}{N}\sum_{i=1}^{N}(y_{i}-\hat{f}(x_{i}))^2 MS
2021-03-23 01:19:11
1374
6
原创 基本的回归模型
一、收集数据集并选择合适的特征波士顿房价数据集包含美国人口普查局收集的美国马萨诸塞州波士顿住房价格的有关信息, 数据集很小,只有506个案例。查看数据集:v_housing = datasets.load_boston() X = v_housing.datay = v_housing.targetfeatures = v_housing.feature_namesboston_data = pd.DataFrame(X,columns=features)boston_data["Price
2021-03-19 00:47:23
5307
1
The use of multiple measurements in taxonomic problems
2020-12-01
鸢尾花(iris)数据集
2020-11-29
gflags-2.2.2
2020-10-13
vue.js 中文文档1.0
2017-12-27
《Kotlin-for-android-developers》中文版
2017-08-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人