机器学习
_吟游诗人
在昨天的未来里活成回忆
展开
-
正则化Regularization
重点:目的:为了避免过拟合,降低模型的复杂度,符合奥卡姆剃刀原理使用条件:当且仅当模型表达能力过强,即有可能出现过拟合的情况下才使用使用方法:在之前的损失函数后面加上惩罚项常见类别:L1-正则化(LASSO)、L2-正则化(Ridge)附加知识:L-N范数注意区分:正则化Regularization和标准化Normalization的区别补充:无穷范数是指所有元素中最大值参考资料:线性回归——lasso回归和岭回归(ridge regression)机器学习------L1、L原创 2020-10-09 09:27:04 · 194 阅读 · 0 评论 -
Joint Learning 与 Multi-Task Learning浅析
Joint Learning和Multi-Task Learning都属于集成学习(Ensemble Learning)的范畴,但网上关于Joint Learning的相关资料较少,因此在这里对这两种学习方式进行简要介绍,并对其不同点进行区分。Joint LearningJoint Learning是指模型中存在多个子任务,而我们可以将这些子任务一起训练。这么说起来有点抽象,可以举个简单的例子。比如在深度学习中,这个“深度”就可以理解为采用了多个模型进行Joint Learning,比如在许多NLP任原创 2020-08-22 10:20:47 · 9875 阅读 · 3 评论 -
module 'sklearn' has no attribute 'svm'
在使用sklearn时有时会出现如下的问题,而且可能不仅仅是svm,可能是其他的什么内容module 'sklearn' has no attribute 'svm'如果确定没有拼写错误,那么就是下面这种情况,在import用的是import sklearn,而不是from sklearn import xxx,sklearn不会自动将其下的所有库都导入进去,因此需要按需自行导入。这是错误...原创 2020-02-06 09:45:01 · 5169 阅读 · 0 评论 -
sklearn的SVM的decision_function_shape的ovo和ovr
SVM本是二分类的分类算法,而由于其直逼神经网络的强大性能,因此也广被应用于多分类领域,这ovo和ovr就是多分类时需要进行选择的两种不同策略。ovo:one versus one,一对一。即一对一的分类器,这时对K个类别需要构建K * (K - 1) / 2个分类器ovr:one versus rest,一对其他,这时对K个类别只需要构建K个分类器。参考资料:Multi class o...原创 2020-02-05 17:47:02 · 6869 阅读 · 1 评论 -
Can not squeeze dim[1], expected a dimension of 1
遇上如题所示问题,多半是因为使用了sparse_categorical_crossentropy作为激活函数这会出现在分类问题中,这个激活函数要求如下:labels vector must provide a single specific index for the true class for each row of logits也就是说,你给的真实输出值,得是一个索引index而不...原创 2020-02-05 15:21:15 · 4556 阅读 · 9 评论 -
python/numpy随机选取训练集/测试集索引
在训练模型中, 往往需要对数据集进行处理,从数据集中随机选取部分数据作为训练集,而另一部分数据作为测试集,一个常用的方法是随机选取索引,下面介绍两种从0~n中随机选取x个不重复索引的方法。注意下述两种方法选出来的都是整数。方法一、用python的randomimport randomdef getRandomIndex(n, x): # 索引范围为[0, n), 随机选x个不重复 ...原创 2020-02-05 11:39:33 · 9625 阅读 · 0 评论 -
(四)tensorflow2.0 - 实战稀疏自动编码器SAE
前文已经介绍完了tensorflow2.0自定义layer、model、loss function,本文将结合前述知识,搭建一个稀疏自动编码器SAE。先简单介绍稀疏自动编码器SAE,其架构如下图所示(图源网络,侵删),三层结构,输出层应尽量和输入层接近,其重点在于中间的隐藏层,隐藏层将数据进行了重新编码,这样做的目的是获得输入数据更好的数据表示。在普通自动编码器中,往往要求隐藏层元素个数要比输...原创 2020-02-03 13:13:55 · 6047 阅读 · 19 评论 -
(三)tensorflow2.0 - 自定义loss function(损失函数)
前文分别讲了tensorflow2.0中自定义Layer和自定义Model,本文将来讨论如何自定义损失函数。(一)tensorflow2.0 - 自定义layer(二)tensorflow2.0 - 自定义Model自定义损失函数有两种情况,一种比较简单,而另一种稍显复杂。先来讨论第一种简单的情况,即不需要额外的参数。什么叫额外的参数呢?损失函数有两个默认参数,分别为实际输出、预测输出...原创 2020-02-03 12:23:34 · 19794 阅读 · 3 评论 -
(二)tensorflow2.0 - 自定义Model
前文写了如何使用tensorflow2.0自定义Layer,本文将讲述如何自定义Model,并将前述的Layer应用到本Model中来。(一)tensorflow2.0 - 自定义layer自定义模型也比较简单,只是需要搞清楚Model中各部分的作用及执行流程即可。由于本例中将使用前文中的自定义Layer,因此先将其代码贴过来以便查阅,没看过前文的也没关系,不影响对自定义模型的理解。im...原创 2020-02-03 11:56:23 · 5911 阅读 · 11 评论 -
(一)tensorflow2.0 - 自定义layer
最近在用tensorflow2.0搭建一个简单的神经网络,虽然结构简单但是由于对自定义有要求,官方提供的layer和model不能满足要求,因此需要自行对layer、model、loss function进行自定义。由于tensorflow2.0发布不久,国内相关文章较少,我便决定写上这一系列文章。本文讨论tensorflow2.0中如何自定义layer。本文不讨论tensorflow1和2在...原创 2020-02-03 10:56:54 · 5532 阅读 · 0 评论 -
tensorflow2.0中Layer的__init__(),build(), call()函数
最近在实验中,需要用到tensorflow建立一个简单的模型,但鉴于部分要求比较苛刻,不能直接使用其内置的layer,因此需要自定义一个layer类,这便涉及到了对__init__(), build(), call()这三个函数的理解先看官方手册中使用了Layer中的这三个关键函数的一个简单的实例:class MyDenseLayer(tf.keras.layers.Layer): def...原创 2020-01-31 22:07:24 · 14548 阅读 · 6 评论 -
python中__init__和__call__的区别
python类中,__init__和__call__方法都是用来初始化类的,但是它们之间存在一些区别。__init__是用来在初始化类的对象时被调用,同时可以传入一些参数。__call__用来在调用该对象时被触发。具体可以看下面的例子class A: def __init__(self): print "init" def __call__(self): print ...原创 2020-01-31 21:30:39 · 946 阅读 · 1 评论 -
tensorflow2.0常用操作记录
tensorflow是非常流行的深度学习框架,其2.0版本与其1.0版本也有较大不同,因此笔者就近期对tensorflow2.0的基本操作的学习进行记录,以供日后查阅。创建tensortf.constant(1)tf.constant(1.)tf.constant(2.2, dtype=tf.double)tf.constant(2.2, dtype=tf.float16)tf.con...原创 2019-12-10 21:01:38 · 366 阅读 · 0 评论 -
深度学习之Xavier初始化
请参看:深度学习之参数初始化(一)——Xavier初始化转载 2019-12-03 17:34:24 · 213 阅读 · 0 评论 -
win10上tensorflow-gpu2.0安装完全指南
现在学习研究中深度学习基本上是标配了,而tensorflow作为常用的深度学习框架之一,且其2.0版本也改静态图为动态图,相当于对pytorch的优势的一次狙击,加之一直以来,尽管在tensorflow2.0版本发布前,其经常被用于作为Pytorch的一个反面教材,但是它的用户量一直以来都要远高于pytorch,而今2.0正式版也已经发布,其能否取代新晋网红pytorch的位置还不好说,但是这并不...原创 2019-11-30 21:49:16 · 727 阅读 · 0 评论 -
海维赛德阶跃函数Heaviside step function
海维赛德阶跃函数又称单位阶跃函数,是一个不连续函数,其最简单的定义如下:即当x大于0时,H(x) = 1;x小于0时,H(x) = 0但是对于x等于0时的函数值,却有不同的说法比如下图所示的一个替代形式:亦或使用half-maximum约定,则可将其定义如下:与一般的离散型函数不同,H(0)的定义在实际应用中是非常重要的本文翻译自:https://en.wikipedia.org...翻译 2019-08-15 10:15:01 · 20051 阅读 · 1 评论 -
keras出现Process finished with exit code -1073741819 (0xC0000005)
今天学习了keras的基础用法便跟着教程悄咪咪用keras撸了一遍mnist的手写数字识别,然后便出现了上述错误,不过要是不出点错心里倒还不自在,那么就直接解决这个问题吧。出现该问题的可能性有很多种,网上的解决方案也五花八门,因此本文只论述我的解决办法。我的问题是h5py这个包的版本问题,只需要将其更新到2.9.0即可。但是如果使用清华源的话,更新不到最新版本!!因此必须切换回默认源。切换...原创 2019-08-23 22:03:27 · 974 阅读 · 0 评论 -
正规方程求解特征参数的推导过程
本文为Coursera上吴恩达的机器学习视频中未推导的一个公式,在此不对该公式由来进行解释,只附上本公式的推导过程,涉及许多线代知识。本文转载自:https://blog.csdn.net/chenlin41204050/article/details/78220280设有m个训练实例,每个实例有n个特征,则训练实例集为:其中表示第i个实例第j个特征。特征参数为:输出变量为:故代...转载 2019-06-16 21:47:45 · 196 阅读 · 0 评论 -
pandas基础操作语法
Pandas是一款用于python机器学习中数据分析的常用工具,其中文文档:Pandas中文文档下面将列出部分常用操作,不做详细解释,可供查阅或温故# 导入pandasimport pandas as pd# 设置数据路径file_path = '../xxx.csv'# 读取数据为DataFramefile_data = pd.read_csv(file_path)查看数据整体...原创 2019-07-06 10:44:37 · 222 阅读 · 0 评论 -
numpy的array和asarray
numpy中的array和asarray有细微差别如果原始数据是python内置的列表类型,比如list,则使用array和asarray是一样的,都是新开辟了一个空间,比如:data3 = [1,2,3]test1 = np.array(data3)test2 = np.asarray(data3)print(data3)print(test1)print(test2)输出为:...原创 2019-07-18 11:35:36 · 305 阅读 · 0 评论 -
PM2.5预测(李宏毅机器学习hw_1)
仔细斟酌了几秒钟,我终于决定写下这篇博客,或许应该取一个高大上的名字,比如“Linear Regression to predict PM2.5 using Gradient Descent”,不过回头看了看惨淡的排名…言归正传,本文仅适合看见该题目无从下手的小白进行参考,用的算法也是入门爆款的线性回归的梯度下降,也是我用py撸的第一个梯度下降,下面切入正题。题目链接:https://www...原创 2019-07-19 00:17:16 · 1733 阅读 · 2 评论 -
完备的 AI 学习路线,最详细的中英文资源整理
本文转载自:http://tech.ifeng.com/c/7mEnQrFxKcC 【侵删】本文由知名开源平台,AI 技术平台以及领域专家:Datawhale,ApacheCN,AI 有道和黄海广博士联合整理贡献,内容涵盖 AI 入门基础知识、数据分析挖掘、机器学习、深度学习、强化学习、前沿 Paper 和五大 AI 理论应用领域:自然语言处理,计算机视觉,推荐系统,风控模型和知识图谱。是你学习...转载 2019-07-17 09:33:12 · 1026 阅读 · 0 评论 -
鞍点
关于“鞍点”的说法网上讲的乱七八糟,因此我特地上维基百科探查了鞍点的真相。首先在高等数学里可能大家都还记得一个平面叫马鞍面,图形如下(粘贴自维基百科),那个红点就是三维空间中的鞍点。我们可以从正交的两个方面来看这个点,以平行于坐标轴XOZ平面和YOZ平面的过这个红点的两个平面对这个图形进行截取,可以发现,在一个方向上它是极大值,在另一个方向上它是极小值,这种点就叫鞍点(Saddle Point)...原创 2019-07-17 18:09:34 · 9212 阅读 · 5 评论 -
numpy数组中round, around, rint, ceil, floor, modf, trunc, fix
numpy中对于数组中数字的操作有许多,这里列出常用的一部分,分别是:round, around, rint, ceil, floor, modf, trunc, fix方法名定义作用roundnp.round(a, decimals=0, out=None)将a四舍五入,精度由参数decimals决定,与around等价aroundnp.around(a, d...原创 2019-07-30 09:41:44 · 7821 阅读 · 0 评论 -
numpy中常用ufunc
本文转载自《利用python进行数据分析-第二版》转载 2019-07-30 09:45:25 · 234 阅读 · 0 评论 -
numpy中的axis
初接触axis确实感到非常厉害,但又有点难以理解,直到我看到了这篇博文:https://blog.csdn.net/m0_37673307/article/details/82118030最核心的一句话是:设axis=i,则numpy沿着第i个下标变化的方向进行操作...转载 2019-07-30 10:43:41 · 108 阅读 · 0 评论 -
pandas中的Series和DataFrame的rank方法的理解
rank是将Series或DataFrame的数据进行排序类型的一种方法,不过它并不像sort(含sort_index、sort_values等)那样返回的是排序后的数据,而是当前数据的排名。上述很好理解,但是往往可以看到一句话:默认情况下,rank是通过“为各组分配一个平均排名”的方式破坏平级关系的刚接触这个方法可能很难理解这句话,那么看下面的例子:是不是仍然很难理解,为什么ran...原创 2019-08-03 14:44:31 · 5694 阅读 · 2 评论 -
基于KNN算法实现手写数字识别
KNN算法是分类算法中最简单的一个算法了,关于这个算法的原理我就不做详细介绍了,这么简单的算法,究竟能不能用来准确的进行分类呢?其正确率又有多高呢?带着一点怀疑,咱来进行这个实验,我们就用最简单的KNN算法来进行手写数字识别,编程语言是python 3。首先讲一下思路,常规的机器学习算法大致有如下几个步骤:1、收集数据2、数据预处理3、寻找一个function set4、通过对数据进行...原创 2019-07-27 20:35:26 · 2762 阅读 · 6 评论 -
直方图和柱状图浅析
直方图和柱状图因其长得很相似,故常引起初学者的疑惑,但其实二者存在很大的区别。上述两图中,前图为柱状图,后图为直方图。单从视觉上看来两种图很相似,但是细心点也可以发现柱状图的图中是有间隔的,而直方图没有,但是为什么呢?他们又分别用于什么情况?柱状图和直方图其实在本质上的功能就是不同的,柱状图常描述多个对象的某个值的不同,而直方图常描述同一个值在不同区间中的分布。听起来有点抽象,下面举个栗子...原创 2019-08-07 17:10:08 · 1434 阅读 · 0 评论 -
信息熵的通俗理解
本文转载自知乎用户 忆臻 的回答(侵删):https://www.zhihu.com/question/22178202/answer/161732605转载 2019-08-07 20:41:55 · 176 阅读 · 0 评论 -
pip或conda更新不到包的最新版本,或出现requirement alread up-to-date却并非最新版本
有时候在使用pip或conda更新包的时候,明明不是最新版的包,却提示为最新版本,这时候往往是下面的原因。国内用户为了提高下载速度往往会使用清华源,然而由于种种原因,清华源里面的很多软件包并不是最新版的,因此这个时候进行下载,尽管包并不是最新版,但仍然会提示requirement already up-to-date,这时候我们只需要换回默认源即可,在命令行输入如下代码:conda confi...原创 2019-08-23 21:55:17 · 2267 阅读 · 1 评论 -
机器学习入门——Iris问题
Iris是一个经典的机器学习入门数据集,本片博客将讲述如何使用该数据集,用极其简单的代码来实现一个简单的机器学习的例子。本文适合有一丢丢python基础的同学学习实验需求:安装好 anaconda(这家伙自带了很多科学计算的module,是机器学习必备神器) 本数据集可在网站:https://en.wikipedia.org/wiki/Iris_flower_data_set#Data_...原创 2018-02-08 19:01:27 · 1365 阅读 · 0 评论