线代 范数

在机器学习中,经常使用范数函数衡量向量。

表示为||x||(略去了下标)。直观理解是点x到原点的距离。

其中,L2范数又可以称为欧几里得距离。

当下标为无穷时,表示向量中具有最大增幅的元素的值。

Kaggle Digit Recognizer

ML

问题表述

Digit Recognizer是Kaggle初学者区的一个数字识别问题。问题要求很简单,即图像识别,根据图像识别数字。

数据说明

这个问题的data中,给出了三个文件,分别是sample_submission.csv,test.csv和train.csv。

其中,train.csv和test.csv分别是训练集和测试集。sample_submission.csv用来展示提交格式。

图片由28*28的784个像素点组成,像素值可取0~255,像素值越大,像素点暗。

在训练集中,第一列数据代表了图像的数字,1~784列数据则表示了这个数字的28*28像素图像。每一行数据以以下格式构成图片。

1
2
3
4
5
6
000 001 002 003 ... 026 027
028 029 030 031 ... 054 055
056 057 058 059 ... 082 083
| | | | ... | |
728 729 730 731 ... 754 755
756 757 758 759 ... 782 783

测试集数据共有28000组。

最终,数据提交时,要加首行和排序,格式如下。

1
2
3
4
5
ImageId,Label
1,3
2,7
3,8
(27997 more lines)

ML k-邻近分类算法

ML

概述

k-邻近算法采用测量不同特征值之间距离的方法分类。

  • 优点:精度高,对异常值不灵敏,无数据输入假定。
  • 缺点:计算复杂度高,空间复杂度高。
  • 适用数据范围:数值型和标称型。

工作原理:存在一个训练样本集,并且其中每个数据都存在标签,即我们知道样本集中每一个数据和标签的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后提取样本集中特征最相似(最邻近)数据的分类标签。一般来说,只选择数据样本集中前k个最相似的数据,这就是kNN中k的来源。

k-邻近算法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
dataSetSize = dataSet.shape[0]
diffMat = tile(inX, (dataSetSize, 1)) - dataSet
sqDiffMat = diffMat ** 2
sqDistance = sqDiffMat.sum(axis=1)
distances = sqDistance ** 0.5
sortedSqDistance = distances.argsort()
classCount = {}
for i in range(k):
voteIlabel = labels[sortedSqDistance[i]]
classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1
sortedClassCount = sorted(classCount.iteritems(), key=operator.itemgetter(1), reverse=True)
return sortedClassCount[0][0]

ML 基础

ML

由于之前有关Machine Learning的学习过于散乱,所以在次开始总结机器学习的内容。

机器学习基础

特征 : 是区分不同事物的属性;

目标变量 : 通过机器学习想要预测的结果;

训练集 : 大量已分类数据;

测试集 : 获取算法精确度的测试数据;

分类回归属于监督学习,之所以称之为监督学习,是因为这类算法必须知道要预测什么,即目标变量的分类信息。

与监督学习相对应的是无监督学习,此时的数据没有类别信息,也不会给定目标值。在无监督学习中,将数据集合分成由类似的对象组成的多个类的过程称为聚类,将寻找描述数据统计值的过程称为密度估计。此外,无监督学习还可以减少数据特征的纬度,以便我们使用二维或者三维图形更加直观地展示数据信息。