自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySql数据类型

mysql 数据类型

2022-11-10 19:32:20 775 1

原创 Pandas常用函数之shift()

一、shift()函数简介    函数原型:DataFrame.shift(periods=1, freq=None, axis=0)periods:类型为int,表示移动的幅度,可以是正数,也可以是负数,默认值是1,1就表示移动一次,注意这里移动的都是数据,而索引是不移动的,移动之后没有对应值的,就赋值为NaN。二、举例例一:    shift函数是对数据进行移动的操作,假如现在有一个DataFrame数据df,如下所示:indexvalueA0B1

2021-07-11 19:31:56 2807

原创 Python——enumerate()函数

一、enumerate()函数简介    enumerate(iterable, start=0):第一个参数为可迭代的数据,比如python中的list。第二个参数为该函数打印标号的初始值,默认从0开始打印,该函数返回一个enumerate类型的数据。enumerate()是Python的内置函数用于可迭代、可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标一般在for循环中使用二、enumerate()使用例一:    enumerate()函数用于 for 循环就得到全部的

2021-04-23 10:03:36 537

原创 HTML&CSS学习笔记一

一、安装VsCode1.1 下载地址    这里我附上下载地址,镜像是国内源,速度飞快!    VsCodeUserSetup-x64-1.43.0.exe1.2 安装中文语言包    在扩展程序(快捷键 Ctrl+shift+X)搜索框内输入Chinese,即可很多中文插件,选择第一个中文简体就行,这里我是安装好的。1.3 安装ayu主题    如果你觉得vscode主题不好看,我这里推荐一个插件ayu,同样在扩展程序(快捷键 Ctrl+shift+X)搜索框内输入ayu,我选择的是 Ay

2021-04-18 10:46:48 147

原创 Python 第八章 测试代码

文章目录前言一、测试函数1.1 单元测试和测试用例1.2 可通过的测试1.3 不能通过的测试1.4 测试未通过时怎么办二、测试类2.1 各种断言方法2.2 一个要测试的类2.3 测试AnonumousSurvey类2.4 方法setup()前言    编写函数或类时,还可以为其编写测试,通过测试,可以确定代码面对各种输入都能够按要求那样工作。    通常我们使用 python 模块 unittest 中的工具来测试代码。一、测试函数1.1 单元测试和测试用例单元测试:用于核实函数的某个.

2021-04-04 13:09:51 466 1

原创 Python 第七章 异常

文章目录前言一、处理 ZeroDivisionError(除0错误)二、使用 try-except 代码块三、使用 try-except-else 代码块四、分析文本前言    Python 使用被称为异常的特殊对象来管理程序执行期间出现的错误,每当发生错误时,它都会创建一个异常对象,终止程序并显示一个包含异常报告的 traceback。    异常是使用 try-except 代码块处理,它让 python 执行指定操作,并告诉 python 发生异常该怎么办。一、处理 ZeroDivis.

2021-04-03 12:05:08 348 2

原创 Python 第七章 文件读写

7. 文件读写7.1 从文件中读取数据    要使用文本文件中的信息,首先需要将信息读取到内存中。为此,你可以一次性读取文件全部内容,也可以以每次一行的方式逐步读取。    1、读取整个文件    读取整个文件可使用 read() 方法,关键字 with 在不再需要访问文件后将其关闭,函数 open() 用来打开文件,它接受一个参数:要打开文件的名称。    我们也可以调用 open() 函数和 close() 函数来打开和关闭文件;但这样做,如果程序存在bug,导致 close() 语句未执行,

2021-04-02 15:09:30 299 1

原创 Python 第六章 类

6. 类6.1 创建和使用类    1、创建类    函数是带名字的代码块,用于完成具体工作,当需要在程序中多次执行同一项任务时,即可调用函数,程序的编写、阅读、测试和修复都将更容易。0    2、使用类和实例    3、继承...

2021-04-01 18:13:53 216

原创 Python 第五章 函数

5. 函数5.1 定义函数    1、函数定义    函数是带名字的代码块,用于完成具体工作,当需要在程序中多次执行同一项任务时,即可调用函数,程序的编写、阅读、测试和修复都将更容易。def 关键字用于定义函数def 关键字后跟函数名( def 函数名( ) )函数名后括号内有形参,其存储着传入函数内部的参数紧跟在 def 函数名() 后的所有缩进构成函数体用三引号括起来的是文档字符串,用于生成有关程序中函数的文档def greet_user(): """显示简单的问候语"""

2021-03-31 16:53:49 217

原创 Python 第四章 用户输入和 while 循环

4. 用户输入和 while 循环4.1 用户输入 input() 函数    1、函数 input( ) 让程序暂停运行,等待用户输入一些文本。获取其输入后,python 将其存储在一个变量中,方便使用。name = input('Please enter your name:')print('Hello, %s !' % name)输出:Please enter your name:李明Hello, 李明 !进程已结束,退出代码 0    2、使用函数 int( ) 获取数值输入

2021-03-30 11:43:11 336

原创 Python 第三章 if 语句

3. if 语句3.1 基本概念     编程时经常需要检查一系列条件,并据此决定采取什么措施。if 语句可以让你能够检查程序当前的状态,并据此采取相应措施。3.2 条件测试     每条 if 语句的核心都是一个值为 True 或 False 的表达式,这种表达式被称为条件测试。比较两个值     = 赋值运算符,== 比较运算符car = 'bmw'print(car == 'bmw')输出:True进程已结束,退出代码 0    检查数值age = 18print

2021-03-29 17:56:23 184

原创 Python 第二章 集合

2.4 集合1. 基本概念集合:集合与字典类似,都是用 ‘{ }’ 括起来,但字典中的元素是键值对(key-value),而集合中的元素则是和列表(list)、元组(tuple)一样的单个值。集合中的元素都是不可变数据类型,如整数,浮点数,字符串,元组等。集合中的元素是不重复的唯一值。集合中的元素是无序的,添加顺序和在集合中的存储顺序不一样。只支持成员操作赋、for循环迭代、枚举。2. 集合的创建、添加、删除、交集、并集、差集、超集、子集、判断是否相交2.1 创建集合     创建集

2021-03-27 14:23:51 211 1

原创 Python 第二章 字典

2.3 字典1. 基本概念字典:字典是由一系列键值对组成,可以是数字、字符串、列表等任何类型。字典中的键值对是无序的,都是随机排列。字典中的键(key)必须保证唯一,但是值(value)可以重复。键和值之间用逗号 ‘,’ 分隔开,而键值对之间用冒号 ‘:’ 分隔,整个字典被一对 ‘{}’ 包括起来。2. 字典的创建、添加、删除、修改、查询2.1 创建字典     创建字典时我们可以先创建一个空字典,即使用一对空的花括号定义一个字典,然后再分行添加各个键值对。例:scores = {

2021-03-26 19:53:10 1026 3

原创 Python 第二章 元组

2.2 元组1. 基本概念    元组是一系列不可变的Python对象。元组是一种序列,就像列表一样。元组和列表之间的主要区别是元组不能像列表那样改变元素的值,可以简单地理解为“只读列表”。 元组使用小括号 (),而列表使用方括号 [] 。列表通常用来存储相同类型的数据;而元组在实际开发中,通常用来存储不同类型的数据。元组(Tuple)与列表相似,不同之处在于元组的元素不能修改,其内的列表中的数据可变。元组表示多个元素组成的序列,用于存储一串信息,不同数据之间用逗号隔开。2. 元组的创建、删

2021-03-25 17:39:02 404 2

原创 Python 第二章 列表

2.1 列表1. 基本概念    列表由一系列按特定顺序排列的元素组成,这些元素可以是字母、数字等任何类型,各个元素之间没有任何关系;是一个有序的、可修改的(增删查改)、元素可重复、元素以逗号分隔、以中括号包围的序列。2. 列表的增、删、改、查、排序增加元素方法用法list.append()在列表的尾部加入指定的元素list.insert(a,b)在列表任何位置 a 添加新元素 blist.extend将指定序列的元素拆分成单个字符依次追加的列表的尾部(合

2021-03-23 15:24:29 286 2

原创 Python 第一章 变量和数据类型

1.1 变量    变量中存储着值,程序中可随时修改变量的值,而python 始终记录着变量的最新值,在使用变量时需遵守以下规则:变量名只能包含字母、数字和下划线,变量名可以是字母或下划线打头,但不能以数字打头。变量名不能包含空格,但可以使用下划线来分隔其中的单词。不要将 python 关键字和函数名用作变量名,即不要使用python保留用于特殊用途的单词。变量名应该简短又具有描述性,如 name 比 n 好等。慎用字母 I 和 O,因为他它们有可能被人错看成 1 和 0。1.2 数据类型

2021-03-22 21:25:15 184 1

原创 集成学习之随机森林调参

一、scikit-learn随机森林类库概述    在scikit-learn中,RF的分类类是RandomForestClassifier,回归类是RandomForestRegressor。当然RF的变种Extra Trees也有, 分类类ExtraTreesClassifier,回归类ExtraTreesRegressor。由于RF和Extra Trees的区别较小,调参方法基本相同,本文只关注于RF的调参。    与GBDT的调参类似,RF需要调参的参数也包括两部分,第一部分是Bagging框架

2020-05-21 11:14:28 651

原创 集成学习之Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。本文就对集成学习中Bagging与随机森林算法做一个总结。    随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练。一、bagging原理    在集成学习原理小结中,Bagging的原理图如下    从上图可以看出,Bagging的弱学习器之间的确没有

2020-05-20 21:19:24 398

原创 Xgboost的参数及调参

一、Xgboost参数解释    XGBoost的参数一共分为三类:通用参数:宏观函数控制。Booster参数:控制每一步的booster(tree/regression)。booster参数一般可以调控模型的效果和计算代价。我们所说的调参,很这是大程度上都是在调整booster参数。学习目标参数:控制训练目标的表现。我们对于问题的划分主要体现在学习目标参数上。比如我们要做分类还是回归,做二分类还是多分类,这都是目标参数所提供的。    我下面介绍的参数都是我觉得比较重要的。1.1、通用参数

2020-05-20 16:56:13 5829

原创 集成学习之XGBoost算法推导总结

一、从GBDT到XGBoost    作为GBDT的高效实现,XGBoost是一个上限特别高的算法,因此在算法竞赛中比较受欢迎。简单来说,对比原算法GBDT,XGBoost主要从下面三个方面做了优化:    一是算法本身的优化:在算法的弱学习器模型选择上,对比GBDT只支持决策树,还可以直接很多其他的弱学习器。在算法的损失函数上,除了本身的损失,还加上了正则化部分。在算法的优化方式上,GBDT的损失函数只对误差部分做负梯度(一阶泰勒)展开,而XGBoost损失函数对误差部分做二阶泰勒展开,更加准确。算法

2020-05-19 18:26:56 338

原创 GDBT(提升树)调参

一、GBDT类库概述    在sacikit-learn中,GradientBoostingClassifier为GBDT的分类类, 而GradientBoostingRegressor为GBDT的回归类。两者的参数类型完全相同,当然有些参数比如损失函数loss的可选择项并不相同。这些参数中,类似于Adaboost,我们把重要参数分为两类,第一类是Boosting框架的重要参数,第二类是弱学习器即CART回归树的重要参数。二、GBDT类库boosting框架参数    首先,我们来看boosting框

2020-05-17 17:09:23 789

原创 集成学习之梯度提升树(GBDT)原理总结

一、GBDT概述    GBDT也是集成学习Boosting中的一种算法,但是却和传统的Adaboost有很大的不同。Adaboost 是利用前一轮迭代弱学习器的误差率来更新训练集的权重,这样一轮轮的迭代下去。GBDT也是迭代,但GBDT每一次的计算是都为了减少上一次的残差,进而在残差减少(负梯度)的方向上建立一个新的模型,其弱学习器限定了只能使用CART回归树模型,同时迭代思路和Adaboost也有所不同。    1.1、下面看个年龄预测的例子。    简单起见,假定训练集只有4个人:A,B,C,D

2020-05-16 21:48:33 475

原创 scikit-learn Adaboost类库使用总结

一、Adaboost类库概述    scikit-learn中Adaboost类库可分为AdaBoostClassifier和AdaBoostRegressor两个,从名字就可以看出AdaBoostClassifier用于分类,AdaBoostRegressor用于回归。    AdaBoostClassifier使用了两种Adaboost分类算法的实现,SAMME和SAMME.R。而AdaBoostRegressor则使用Adaboost回归算法的实现,即Adaboost.R2。    当我们对Ad

2020-05-15 16:07:36 849

原创 numpy中np.c_和np.r_的区别

    np.r_是按列连接两个矩阵,就是把两矩阵上下相加,要求列数相等,类似于pandas中的concat()。    np.c_是按行连接两个矩阵,就是把两矩阵左右相加,要求行数相等,类似于pandas中的merge()。    举例    一维向量,代码如下:import numpy as npa = np.array([1, 2, 3])b = np.array([4, 5, 6])print("-------------------a------------------")pri

2020-05-14 22:10:08 206

原创 使用matplotlib.pyplot.contourf()函数高线图绘制

1、contour:轮廓,等高线。为等高线上注明等高线的含义:cs = plt.contour(x, y, z)plt.clabel(cs, inline=1, fontsize=10)2、plt.contourf 与 plt.contour 区别:f:filled,也即对等高线间的填充区域进行填充(使用不同的颜色);contourf:将不会再绘制等高线(显然不同的颜色分界就表示等高线本身)3、区别总结:    contour和contourf都是画三维等高线图的,不同点在于con

2020-05-14 21:37:22 1590

原创 numpy.meshgrid()绘制网格图

一、numpy.meshgrid()介绍1.1、numpy.meshgrid()的用途    numpy.meshgrid()——生成网格点坐标矩阵。1.2、什么是 “网格点” 和 “坐标矩阵”    上图中,每个交叉点都是网格点,描述这些网格点的坐标的矩阵,就是坐标矩阵。    图中 A,B,C,D,E,FA,B,C,D,E,FA,B,C,D,E,F 是 6 个网格点,如何用矩阵形式(坐标矩阵)来批量描述这些点的坐标呢?答案如下:X=[012012] X = \begin{bmatrix}

2020-05-14 11:49:28 3552

转载 机器学习算法随机数生成

    在学习机器学习算法的过程中,我们经常需要数据来验证算法,调试参数。但是找到一组十分合适某种特定算法类型的数据样本却不那么容易。还好numpy, scikit-learn都提供了随机数据生成的功能,我们可以自己生成适合某一种模型的数据,用随机数据来做清洗,归一化,转换,然后选择模型与算法做拟合和预测。下面对scikit-learn和numpy生成数据样本的方法做一个总结。一、 numpy随机数据生成API    numpy比较适合用来生产一些简单的抽样数据。API都在random类中,常见的API

2020-05-14 10:26:11 713

原创 集成学习之Adaboost算法推导

1. 回顾boosting算法的基本原理    在集成学习原理小结中,我们已经讲到了boosting算法系列的基本思想,如下图:    从图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,使得之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数达到事先指定的数目T,最终将这T个弱学习器通过集

2020-05-13 22:07:10 355

原创 集成学习简单小结

一、集成学习之 Boosting    Boosting 是一族可将弱学习器提升为强学习器的算法。    Boosting的算法原理我们可以用一张图做一个概括如下:    从上图中可以看出,Boosting算法的工作机制是首先从训练集用初始权重训练出一个弱学习器1,根据弱学习的学习误差率表现来更新训练样本的权重,让之前弱学习器1学习误差率高的训练样本点的权重变高,使得这些误差率高的点在后面的弱学习器2中得到更多的重视。    然后基于调整权重后的训练集来训练弱学习器2,如此重复进行,直到弱学习器数

2020-05-09 13:37:59 248

原创 集成学习简单介绍

一、集成学习概念    集成学习通过构建并结合多个学习器来完成学习任务,有时也被称为多分类器系统、基于委员会的学习等。二、集成学习的组成2.1、集成学习的一般结构     1. 先产生一组 “个体学习器”     2. 再用某种策略将它们结合起来    个体学习器通常由一个现有的学习算法从训练数据产生,例如 C4.5决策树算法、BP 神经网络算法等,此时集成中只包含同种类型的个体学习器...

2020-05-07 22:35:28 654

原创 决策树三种算法比较(ID3、C4.5、CART)

一、ID3算法    D3算法核心是根据 “最大信息熵增益” 原则选择划分当前数据集的最好特征。“信息熵” 在上一篇博客中写过,它是一种信息度量方式,其不确定度越大或者说越混乱,熵就越大。Ent(D)=−∑k=1∣Y∣pklog⁡2pk             &n...

2020-05-07 17:29:12 15742 1

原创 决策树基础概念总结

一、决策树介绍1、基本实现    决策树(descision tree) 是一种常见的机器学习算法。以二分类任务为例,我们希望从给定训练数据集学得一个模型用以对新事例进行分类,这个过程可以看作是一种“决策”或“判定”,决策树就是基于树结构来进行决策的。在决策的过程中通常会进行一系列的判断或“子决策”。2、基本组成    一棵决策树只有一个根节点、若干个内部节点和若干个叶结点;叶结点对应于决...

2020-04-30 22:57:44 523

原创 机器学习分类和回归任务中的模型评估

一、性能度量概念    对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评估标准,这就是性能度量。    在预测任务中,给定样例集D={(x1,y1),(x2,y2),…,(xm,ym)}D={\lbrace(x_1,y_1),(x_2,y_2),…,(x_m,y_m)\rbrace}D={(x1​,y1​),(x2​,y2​),…,(xm​,ym​)},...

2020-04-28 16:23:19 763

原创 使用scipy.integrate模块中的quad和dblquad方法分别进行单重积分和多重积分

一、单重积分    一般而言,使用求解微积分可以分为两大类:符号积分(即求出解析解)和数值积分(即求出数值解)。在计算机的处理当中,数值解往往更有意义。    quadquadquad函数是 scipyscipyscipy 积分函数的主力。 数值积分有时称为正交积分,因此称为名称。 它通常是在 aaa 到 bbb 给定的固定范围内执行函数 f(x)f(x)f(x) 的单个积分的默认选择,即∫...

2020-04-27 10:23:33 6814 4

原创 Python中单星号(*)和双星号(*)的区别

一、单星号(*)和双星号(**)概念    1、什么是星号变量    最初,星号变量是用在函数的参数传递上的,在下面的实例中,单个星号代表这个位置接收任意多个非关键字参数,在函数的*b位置上将其转化成元组,而双星号代表这个位置接收任意多个关键字参数,在**b位置上将其转化成字典:∗*∗  该位置接受任意多个非关键字(non-keyword)参数,在函数中将其转化为元组(1,2,3,4)∗...

2020-04-26 16:35:40 1100

原创 数据集划分方法(留出法、交叉验证)

一、留出法    留出法(hold_out)直接将数据集D划分为两个互斥的集合,其中一个集合作为训练集S,另一个作为测试集T,即D=S⋃T,S⋂T=∅D=S\bigcup T,S\bigcap T=\emptysetD=S⋃T,S⋂T=∅,在S上训练出模型后,用T来评估其测试误差,作为对泛化误差的估计。举例:from sklearn.datasets import load_breast_c...

2020-04-25 23:03:30 10071 1

原创 sklearn 中 predict 方法和 predict_proba 方法的区别和使用

一、predict 和 predict_proba的概念和区别    1、predict和predict_proba都是用于模型的预测。    2、predict返回的是一个预测的值,predict_proba返回的是对于预测为各个类别的概率。    3、predict_proba返回的是一个 n 行 k 列的数组,n 表示测试集中样本的个数, 第 i 行 j列的数值是模型预测 第 i 个预...

2020-04-24 22:02:05 10480

原创 Pandas之 get_dummies 进行 one-hot 编码(虚拟变量或哑变量)

一、虚拟变量概念    虚拟变量 ( Dummy Variables) 又称虚设变量、名义变量或哑变量,用以反映质的属性的一个人工变量,是量化了的自变量,通常取值为0或1。引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到两个方程的作用,而且接近现实。二、为什么使用虚拟变量    在回归分析中,自变量X既可以是定量数据也可以定类数据。回归分析计算时是将所有自变量X视为数...

2020-04-22 19:32:55 1149

原创 神经网络反向传播算法(BP算法)

一、反向传播算法原理反向传播算法概念:最初,所有的边权重(edge weight)都是随机分配的。对于所有训练数据集中的输入,人工神经网络都被激活,并且观察其输出。这些输出会和我们已知的、期望的输出进行比较,误差会「传播」回上一层。该误差会被标注,权重也会被相应的「调整」。该流程重复,直到输出误差低于制定的标准。传播原理:反向传播主要依赖于链式法则复合函数求导     如下图, y是复合函...

2020-04-17 11:50:54 3455

原创 神经网络算法计算过程推导

一、单个神经元    神经网络算法,是使用计算机模拟生物神经系统,来模拟人类思维方式的算法。它的基本单位就是人工神经元,通过相互连接形成一张神经网络。    下面三张图都展示了单神经元的结构:    图一中x1、x2、…、xnx_1、x_2、… 、x_nx1​、x2​、…、xn​表示输入, w1、w2、…、wn~w_1、w_2、…、w_n w1​、w2​、…、wn​表示权...

2020-04-13 23:26:01 3515

空空如也

空空如也

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

TA关注的人

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