
学习笔记
AndrewThompson
这个作者很懒,什么都没留下…
展开
-
简单的机器学习笔记(吴恩达)
1.监督学习(已知的数据集都是有明确的标签的):分类、预测 2.无监督学习(已知的数据集没有明确的标签,关注的是数据的类型结构):聚类算法、组织计算机集群、社交网络分析、市场分割、天文数据分析 3.Octave软件的使用 4.a:=b 赋值 a=b断言的判断(视频提示) 5.αα\alpha代表的是学习率,也就是在梯度下降的时候,“迈出的步子”的大小 如果学习速率设置得太小,那...原创 2018-03-23 23:25:32 · 239 阅读 · 0 评论 -
机器学习笔记2(吴恩达)
1.减少预测的准确率:得到更多的训练样本;使用小一点的特征;得到一些额外的特征;增加多项式特征的方法; 2.将数据分为测试集和训练集(比例一般是7:3) 3.机器学习算法问题:高偏差—拟合的多项式的次数太小,训练误差和验证误差都会非常大;高方差—拟合的多项式的次数太大,训练误差会很小,但是验证误差会很大 4.调试一个学习算法:使用更多的训练样例(解决高方差的问题);使用更小的特征集合(解决高方原创 2018-03-25 20:06:35 · 381 阅读 · 0 评论 -
Knn的python实现
python实现knn 运行的结果为 实现代码如下:import numpy as npimport pickle as picimport heapq as hpfrom collections import Counterclass Solution: path_train='' train_data=[] train_label=[] test_原创 2018-04-02 09:01:25 · 312 阅读 · 0 评论 -
几种更新策略的比较
按照模块化编程,自己写了个全连接的神经网络,一共四个文件,具体介绍如下:第一个文件是layers.py,具体实现的是简单的前向计算,relu函数的前向传播计算以及relu的反向传播计算:import numpy as npdef simple_forward(x,w,b): output=x.dot(w)+b return outputdef relu_func(x): re原创 2018-04-09 17:14:32 · 1525 阅读 · 0 评论 -
SVM的实现
思路:从训练集当中选取一部分作为验证集,对于剩下的训练集,进行多次迭代,每次使用一定量的样本进行训练,用验证集进行测试,从而确定好超参数。确定了超参数之后,用所有的训练集开始进行训练,思路和之前的类似,迭代一定的次数,每次选取一定量的数据进行训练。在训练结束之后,利用测试集进行测试即可,具体实现见如下代码,准确率基本稳定在35%左右,比knn的方法要好。import numpy as npimpo原创 2018-04-03 22:04:28 · 388 阅读 · 0 评论 -
Softmax分类器的实现
和SVM的实现存在一定的相似性,要通过划分训练集的一部分作为验证集来确定超参数。在得出对应的评分之后,要求出对应的概率,同时利用梯度更新的时候,注意求导与SVM存在不同即可,具体实现见如下代码,准确率基本稳定在39%左右。import numpy as npimport pickle as picclass softmax: weight=[] l_rate=0 reg=0原创 2018-04-04 09:45:09 · 3876 阅读 · 1 评论 -
NeuralNetwork(两层的实现)
实现两层的神经网络,利用反向传播算法,首先确定最优的超参数,然后确定权值,最后进行测试,准确率大概在47%左右,具体实现见如下代码:import numpy as npimport pickle as picclass neuralNet: parameter=dict() input_layer = 3072 hidden_layer = 80 output_la原创 2018-04-05 16:47:01 · 938 阅读 · 0 评论 -
batch normalization 技术的引入
在上一篇介绍的基础上引入了一种新的技术,为batch_normalization,然后重新运行,可以看到对于这几种更新技术而言或多或少的都有提高,具体实现如下: layers.py文件的实现:import numpy as npdef simple_forward(x,w,b): output=x.dot(w)+b return outputdef relu_func(x):原创 2018-04-12 22:45:43 · 643 阅读 · 0 评论 -
dropout技术的引入
dropout技术的实现比较简单,直接设置一个mask,在训练的时候让部分神经元“失活”即可,在测试的时候要让所有的神经元参与进来,废话不多说,直接上代码: layers.pyimport numpy as npdef simple_forward(x,w,b): output=x.dot(w)+b return outputdef relu_func(x): return原创 2018-04-13 22:48:28 · 918 阅读 · 0 评论