- 博客(55)
- 收藏
- 关注
原创 支持向量机SVM——最大间隔分离超平面的计算、拉格朗日乘数法求解不等式约束的优化问题
支持向量机SVM——最大间隔分离超平面的计算如何定义两个集合的最优分隔超平面呢?找到集合"边界"上的若干点,以这些点为基础计算超平面的方向,以二维坐标平面为例子wTx+b=0w^Tx+b=0wTx+b=0,当系数wTw^TwT确定的时候,这个超平面的方向也就随之确定,以两个结果边界上的点的平均作为超平面的"截距"。SVM线性分类问题假设给定一个特征空间上的训练数据集T=(x1,t1)...
2019-08-29 20:23:16
10535
原创 支持向量机SVM——支撑超平面、支撑(支持)向量、分割超平面、最大间隔分离超平面
支持向量机SVM前提概念首先从字面的意思来看一下支持向量机,机即machine,也就是算法,那么什么是支持向量呢?支持向量支持的是什么呢?看一下以下几个概念支撑超平面:设有一个集合C,x0C,x_0C,x0为CCC边界上的点。若存在a≠0,a\neq0,a̸=0,满足对于任意的x∈Cx\in Cx∈C,都有aTx≤aTx0a^Tx\le a^Tx_0aTx≤aTx0成立,则称超平面...
2019-08-29 11:13:40
5461
原创 贝叶斯算法、正向概率、逆向概率、先验概率、后验概率、单词拼写纠错实例
贝叶斯算法贝叶斯算法起源于解决逆向概率问题,那么什么叫逆向概率问题呢?在说逆向概率问题之前先看一下什么是正向概率问题。正向概率问题举个栗子:假设一个袋子里有N个白球和N个黑球,伸进手随机摸一个,摸出黑球的概率是多大呢?显然摸出黑球的概率是12\begin{aligned}\frac{1}{2}\end{aligned}21,这就是正向概率问题。与之对应的就是逆向概率问题。逆向概率问题...
2019-08-28 18:00:38
3750
原创 使用线性回归、逻辑回归、决策树、随机森林进行泰坦尼克救援预测
泰坦尼克救援预测from IPython.display import ImageImage(filename=r'C:\Users\a\Desktop\暑假\Titantic\QQ截图20190827081938.png',width=800)第一步:数据分析import pandas as pdimport numpy as npimport matplotlib.pyplot...
2019-08-27 17:07:43
1540
原创 集成学习Bagging与Boosting的区别
集成学习Bagging与Boosting的区别Bagging的训练集是随机的,以独立同分布选取的子集训练分类器,而Boosting训练集的选择不是独立的,每一次选择的训练集都依赖于上一次学习的结果,也就是在上一次学习完成之后会更新每个样本的权重,也就是新的样本分布。Bagging的每个预测函数没有权重,而Boosting根据每一次训练的训练误差得到该次预测函数的权重。Bagging的各个预...
2019-08-26 21:24:00
866
原创 集成学习(Ensemble learning)的Boosting模型、最初的Boosting、Adaboost
集成学习(Ensemble learning)的Boosting模型Boosting模型最初的Boosting重复地从一个样本集合D中采样n个样本针对每次采样的子样本集,进行统计学习,获得假设HiH_iHi将若干个假设进行组合,形成最终的假设HfinalH_{final}Hfinal将最终的假设用于具体的分类任务但是这样的模型只是将原有的弱分类器进行了简单的组合,就是将弱分类...
2019-08-26 18:33:10
757
原创 集成学习(Ensemble learning)的Bagging模型、随机森林、随机森林的Feature Importance
集成学习(Ensemble learning)的Bagging模型Bagging模型(Bootstrap Aggregation)如下图:本质上就是并行训练几个分类器,Bagging是通过组合随机生成的训练集而改进分类的集成算法。Bagging每次训练的数据集是从原始数据集中有放回地随机采样,每一个训练样本在某个训练集中出现的次数n≥0n\ge0n≥0,经过N次的训练后,就得到H1....HN...
2019-08-26 10:24:19
1366
原创 集成学习算法的思想、通过集成学习提高整体泛化能力的前提条件、如何得到独立的分类器Bagging、Boosting、Stacking算法
集成学习算法Ensemble learning algorithm目的:让机器学习的效果更好,单个的分类器如果表现的好,那么能不能通过使用多个分类器使得分类效果更好呢?或者如果单个分类器分类效果不如人意,那么是否能够通过使用多个分类器来进一步提升分类效果呢?通过集成学习可以提高整体的泛化能力,但是这种提高是有前提条件的。通过集成学习提高整体泛化能力的前提条件:分类器之间是有差异的每个...
2019-08-25 22:38:26
2834
原创 使用Graphviz决策树可视化展示,将DataFrame数据保存到本地
决策树可视化展示准备数据集本次使用sklearn的内置数据集import matplotlib.pyplot as pltimport pandas as pdfrom sklearn.datasets.california_housing import fetch_california_housing #导入内置数据集house_price = fetch_california_ho...
2019-08-25 15:09:56
2610
2
原创 决策树预剪枝与后剪枝的区别和优缺点
预剪枝与后剪枝的区别和优缺点为什么要进行剪枝?预剪枝和后剪枝的方法和策略参考我的博文预剪枝预剪枝会使得决策树的很多分支没有展开,也就是没有继续分类下去,这不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销。但是另一方面,有些分支的当前划分虽不能提升泛化性能、甚至可能导致泛化性能暂时下降,但是在其基础上进行的后续划分有可能导致性能显著提升。预剪枝基于’贪心’本质,也就是...
2019-08-24 19:14:23
10916
1
原创 决策树为什么要进行剪枝处理和决策树的剪枝策略,以及后剪枝方法——代价复杂度(CCP)算法剪枝系数的计算
决策树的剪枝处理为什么要进行决策树的剪枝处理呢?决策树的过拟合的风险很大,因为理论上来说可以将数据完全分的开,如果树足够大,每个叶子节点就剩下了一个数据。那么,这就会造成模型在训练集上的拟合效果很好,但是泛化能力很差,对新样本的适应能力不足。所以,对决策树进行剪枝,可以降低过拟合的风险。决策树的剪枝策略决策树的剪枝策略分为预剪枝和后剪枝预剪枝预剪枝就是边建立决策时边进行剪枝的操作。...
2019-08-24 18:37:50
4362
原创 决策树CART算法、基尼系数的计算方法和含义
决策树CART算法——基尼系数决策树的CART算法使用基尼系数来选择划分属性。一个数据集的纯度可以用基尼系数来度量Gini(D)=∑k=1∣y∣∑k′≠kpkpk′=1−∑k=1∣y∣pk2\begin{aligned}Gini(D) = \sum_{k=1}^{|y|}\sum_{k'\ne k}p_kp_{k'} = 1-\sum_{k=1}^{|y|}...
2019-08-24 11:06:42
10869
原创 决策树——ID3算法存在的问题实例详解,以及C4.5算法信息增益率的计算实例
ID3算法存在的问题例如在原始数据中加入一列ID,如下图那么如果以ID为一个节点,那么最后的每个叶子节点中只有一个数据,那么每个叶子节点的熵值都为0,那么此时的信息增益将达到最大,但是这显然不是我们想要的分类结果,这样的分类结果就好像最终得到的每一个分类数据都是按照自己的规则得到的,而我们想要的是根据大部分数据都具有的特征分类,根据一些通用规则而不是特有规则。按照这样特有的规则分类的结果显然...
2019-08-24 10:17:45
5930
1
原创 决策树算法如何切分特征如何选择节点、信息增益、熵值计算
决策树算法决策树树模型决策树:从根节点开始一步步走到叶子节点(这一过程叫做决策的过程,叶子节点就是决策)。所有的数据最终都会落到叶子节点,既可以做分类,也可以做回归。例如下面的图示就是一个决策的过程。根节点:第一个选择的节点。非叶子节点与分支:中间的决策过程叶子节点:最终的决策结果。节点:没增加一个节点相当于在数据中切一刀,将数据分类。决策树的训练于测试训练阶段:从给定的训...
2019-08-23 22:17:55
9612
1
原创 为什么要引入正则化惩罚项?L1正则与L2正则的推导、作用以及区别
正则化惩罚项,L1L1L1和L2L2L2正则Regularize penalty items L1L1L1 and L2L2L2为什么要引入正则化惩罚项?在训练数据不够多时,或者过度训练模型(overtrainingovertrainingovertraining)时,常常会导致过拟合(overfittingoverfittingoverfitting)。正则化方法即为在此时向原始模型引入...
2019-08-22 20:01:37
4263
原创 数据分布不均衡处理——SMOTE算法过采样Over sampling
数据分布不均衡处理——SMOTE算法过采样OversamplingOver\quad samplingOversampling什么是过采样?过采样就是在原始数据分布不均衡时,使用算法,人工生成一部分数据出来,然后对这些新生成的数据随机采样,使得原始数据中少数集的数量最终和多数集的数量相同。如下图,可以看到类别为0的数据的数量远远多于类别为1的数据的数量。SMOTE算法的基本思想对于少...
2019-08-21 20:38:07
3716
1
原创 机器学习——下采样(under-sampling)
下采样(under-sampling)什么是下采样?当原始数据的分类极不均衡时,如下图我们要想用这样的数据去建模显然是存在问题的。尤其是在我们更关心少数类的问题的时候数据分类不均衡会更加的突出,例如,信用卡诈骗、病例分析等。在这样的数据分布的情况下,运用机器学习算法的预测模型可能会无法做出准确的预测,最后的模型显然是趋向于预测多数集的,少数集可能会被当做噪点或被忽视,相比多数集,少数集被...
2019-08-21 17:05:46
88182
3
原创 机器学习之逻辑回归Logistic Regression原理实现升学预测——Python代码实现
Logistic Regression目标: 建立一个逻辑回归模型,通过一个人的两门考试成绩来预测能否被该学校录取,最后计算准确率。下面是本次使用的数据,如有需要学习请留言准备数据#导入模块import pandas as pdimport matplotlib.pyplot as pltimport numpy as np#读取数据data = pd.read_csv('da...
2019-08-18 16:02:30
2257
6
原创 逻辑回归Logistic Regression——二分类原理推导
逻辑回归原理推导——Logistic Regression逻辑回归是经典的二分类算法,逻辑回归的决策边界是非线性的。例如下面的两种分类前者是线性的,后者是非线性的。实际分类中经常是先用逻辑回归分类,再用其他分类如支持向量机等,逻辑回归是比较简单的分类算法,先用逻辑回归再用其他复杂的分类算法查看分类效果,决定是否有必要使用其他分类算法。分类时候我们想要的当然是某一个样本属于AAA还是属...
2019-08-16 21:32:40
3591
原创 梯度下降
梯度下降在 上文 中说了参数的计算,但是在实际的应用过程中,参数矩阵并不是可以直接计算的,是无解的,此时需要借助计算机的快速运算能力,不断优化参数,得到近似最优解。那么如何进行优化,优化的方向如何呢?这就涉及到了梯度下降和学习率(优化时每次采用的步长)。首先来看一下梯度的定义。梯度:在数学上,梯度的本意是一个向量(矢量),表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点...
2019-08-16 10:29:39
2023
原创 线性回归算法原理推导——最小二乘法直接计算参数矩阵
线性回归最小二乘法直接计算参数矩阵为了举例简单,假设银行的贷款系统计算一个人的额度时候,只受到年龄,每月固定收入的影响(当然实际情况要复杂的多),那么年龄和月固定收入对一个人的贷款额度的大小影响分别有多大呢?这个影响程度称之为参数。假设年龄和每月固定收入分别为x1,x2x_1,x_2x1,x2,年龄和每月固定收入对贷款额度的影响程度分别用参数θ1,θ2\theta_1,\theta_2θ1...
2019-08-15 21:30:58
3220
原创 简单的机器学习原理实现线性回归
简单的机器学习原理实现线性回归以下是使用的数据表,如有需要学习使用请留言或评论#导入库import numpy as npimport matplotlib.pyplot as plt#读取数据 #绘制散点图def read_plot(): data = np.loadtxt('liner_regression.csv',delimiter=',') x = dat...
2019-08-15 16:10:18
148
原创 Python推导式——列表、字典、集合推导式
Python推导式Python中的推导式共有三种分别是列表推导式,字典推导式和集合推导式,推导式的应用不仅方便而且优化了代码,增加了代码的可读性##列表推导式symbols = '%&%$#@'#将每个符号转化为各自的ASC码存储在字典中symbols_list = [ord(i) for i in symbols]symbols_list[37, 38, 37, 36, ...
2019-08-14 20:17:10
256
原创 使用Matplotlib绘制常用的折线图、纵向柱状图、横向柱状图和散点图
使用Matplotlib绘制常用的折线图、纵向柱状图、横向柱状图和散点图#第一步:导入模块 读取文件 准备数据import matplotlib.pyplot as pltimport pandas as pdunrate = pd.read_csv('UNRATE.csv') # The nemployment rate of USA from 1948 to 2016x = ...
2019-08-14 19:07:38
2645
原创 如何使用Matplotlib绘制图像?——使用Matplotlib绘制图像的通用一般步骤
如何使用Matplotlib绘制图像?——使用Matplotlib绘制图像的通用一般步骤Matplotlib是实现数据可视化的重要的函数库,使用Matplotlib绘图的一般过程如下第一步:导入函数库 import matplotlib.pyplot as plt第二步:创建画布并指定大小和清晰度 plt.figureu(figsize = (长,宽),dpi = )第三步:调用 p...
2019-08-14 10:24:11
3081
原创 Pandas数据处理基本操作——Pandas的索引重置,索引与切片索引,自定义函数的应用
Pandas数据处理基本操作以下是本次实验使用的数据表,如有需要联系,请留言import pandas as pdimport numpy as np#读取文件 不同媒体或网站对电影的评分fandango = pd.read_csv('fandango_score_comparison.csv')fandango.head() FILM...
2019-08-13 20:41:15
1629
原创 Pandas数据处理基本常用操作——核心数据结构Series
Pandas数据处理基本常用操作——核心数据结构SeriesPandas各个数据类型的关系 0维单值变量->1维Series->2维DataFrame->3维层次化DataFrame,Series与DataFrame都是Pandas的核心数结构创建Series的方法主要有列表创建和字典创建以及使用其他方法创建使用列表创建Seriesimport pandas as pd...
2019-08-13 09:16:44
529
原创 Pandas基本常用操作自定义函数——第三节
Pandas基本常用操作自定义函数——第三节以下是本文所用的数据表,如需数据表学习练习,请留言#Pandas的自定义函数import pandas as pdimport numpy as nptitanic = pd.read_csv('titanic_train.csv')titanic.head() PassengerId ...
2019-08-12 15:59:39
1008
原创 Pandas基本常用数据处理操作——第二节
Pandas基本常用数据处理操作——第二节读取数据并显示#本节使用的数据表示kaggle泰坦尼克救拯救比赛的数据#导入模块 读取数据import pandas as pdimport numpy as nptitanic = pd.read_csv('titanic_train.csv')#显示数据 仅显示前10行titanic.head(10)#passengerid 表...
2019-08-12 14:40:40
874
原创 Pandas常用基本操作---第一节
Pandas基本操作本文的所有试验均基于jupyter notebook使用Pandas读取csv文件并显示import pandas as pd#读取csv数据文件food_info = pd.read_csv('food_info.csv')#查看数据类型 DataFrame数据类型是pandas的核心数据类型之一print(type(food_info))#查看数据f...
2019-08-11 21:20:35
1700
原创 Python类的继承与多继承
Python类的继承与多继承继承两个中有大量重复的代码,是否能够只写一次 ?抽象出一个更抽象的类,放公共代码通过继承能够重用代码,方便代码的管理和修改继承并不是复制变量空间,子类更新成员变量,但是父类的成员变量不会随之更新。继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:...
2019-08-11 15:17:28
2720
原创 Python私有属性、私有方法
Python私有属性、私有方法私有属性、方法——Python并没有真正的私有化支持,但可用下划线得到伪私有在实际开发中,类的某些属性或方法可能只希望在对象的内部被使用,而不希望在外部被访问到私有属性就是类不希望公开的属性私有方法就是类不希望公开的方法Python 不能像 Java 那样使用 private 修饰符创建私有属性,但是 Python 有个简单的机制,能避免子类意外覆盖“私有”...
2019-08-10 20:43:00
700
原创 Python类的方法、self的含义、类的初始化与析构
类的方法、self的含义、类的初始化与析构类的方法方法:就是类中定义的函数。例如定义一个简单的Square的类class Square(object): def area(edge_length): return 4*edge_length def volume(edge_length): return edge_length**3#调用...
2019-08-10 16:05:43
1269
原创 Python类class的定义、属性及其实例化
类是某一类具有通用特点的事务的统称 类的定义 类的三要素是类名、属性、方法类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。方法:类中定义的函数。实例化:创建一个类的实例,类的具体对象。对象:通过类定义的数据结构实例。类的定义#定义一个Person类,类名首字母一般大写class Person(obje...
2019-08-10 11:42:47
5618
2
原创 Numpy科学计算库的常用操作
Numpy常用操作使用numpy读取txt文件#导入numpy库以np作为其别名import numpy as np#使用numpy读取txt文件,文件在同一文件夹下使用相对路径,否则使用绝对路径,delimiter = ‘,’以中文逗号分隔,#若txt文件中既有中文逗号又有英文逗号则分隔结果不同,dtype是数据类型,可以使用help函数直接查看官方文档world_alcohol ...
2019-08-09 21:28:47
354
原创 Python函数递归
Python函数递归在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。递归中可以函数自身调用自身,但是使用时类似于条件循环一样,要有递归的终止条件。例如使用函数递归来计算n!n!n!def factorial(n): if n == 1: return 1 return n * factorial(n -1)print(...
2019-07-26 07:18:17
493
原创 Python函数变量作用域
Python函数变量作用域变量有全局变量和局部变量,全局变量顾名思义就是全局使用,在整个程序执行过程中,都会使用到,并且可以访问全局变量的值,而局部变量就是在局部使用,局部能够访问变量的值,使用之后就销毁的变量。函数外部不能访问函数内部变量def two_square(): a = 2 b = a ** 2 print(b)two_square()print(a)...
2019-07-24 15:20:38
299
原创 Python匿名函数lambda与过滤器filter
Python匿名函数lambda与过滤器filterfilter函数filter() 函数用于过滤序列,过滤掉不符合条件的元素,python2返回由符合条件元素组成的新列表,python3返回迭代器。filter接收两个参数,函数名和序列。在使用前必须先定义一个函数,用来判断序列中的元素是否符合条件。例如:使用filter函数过滤得到某一序列的偶数def even_number(x):...
2019-07-24 12:58:34
1136
原创 Python常用内置函数
Python常用内置函数map函数map(func,iterable),map() 会根据提供的函数对指定序列做映射。python2返回列表,python3返回迭代器。例如:使用map函数将一个可迭代对象的每个元素求平方a = [1,2,3,4,5,6,7,8,9]def square(x): return x**2print(map(square,a))print(list...
2019-07-24 08:29:27
293
原创 Python拆包
Python拆包拆包拆包就是将一个对象拆为多个对象,拆包实际上可以应用到任何可迭代对象上,唯一的硬性要求是,被可迭代对象中的元素数量必须要跟接受这些元素的元组的空档数一致。除非我们用 * 来表示忽略多余的元素。带*的变量返回列表。列表拆包拆包:*在最后my_list = [1,2,3,4,5,6,7]a,b,c,*d = my_listprint(id(my_list))print(...
2019-07-24 07:35:21
680
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人