机器学习实战教程(第一章 准备工作)

第一章 准备工作

1.1、编程环境搭建

本教程采用的编程语言为python,推荐使用Anaconda,这样可以不用自己安装各种库。要知道,现在在windows安装python的库时,经常出现安装失败。安装了Anaconda后,应该是已经有了numpy 、scipy、matplotlib、sklearn。如果你是在linux上使用python,那么可以不需要Anaconda了,可以下载库的源码,自己编译即可(一般库里面都有个Readme.md之类的文件,自己看看就知道怎么安装了)。

本教程假定读者已经有了Python编程的基础,所以不会过多讲解Python基础知识。如果不懂python语法,可以阅读《Python基础教程》,如果想深入了解Python的特性,可以阅读《Python Cookbook》。

1.2、编程上手

1.2.1 Numpy矩阵运算

推荐读者看看这个教程。

1.2.1.1 创建矩阵
import numpy as np #导入numpy

mat_zeros = np.zeros([3, 3]) #创建一个全0矩阵

如果使用的是Spyder编辑器,可以在文本编辑时按 ctrl + I 来获取帮助,例如,np.zeros的帮助如下:

zeros
Definition : zeros(shape, dtype=float, order='C')

Type : Function of numpy.core.multiarray module

Return a new array of given shape and type, filled with zeros.

Parameters

shape : int or sequence of ints
Shape of the new array, e.g., (2, 3) or 2.
dtype : data-type, optional
The desired data-type for the array, e.g., numpy.int8. Default is numpy.float64.
order : {‘C’, ‘F’}, optional
Whether to store multidimensional data in C- or Fortran-contiguous (row- or column-wise) order in memory.

下面再来使用几个函数。

mat_random = np.random.rand(3, 4)  #创建随机矩阵
print mat_random
mat_eye = np.eye(3)    #创建单位阵
1.2.1.2 矩阵运算

加法和减法都是elementwise的,使用 * 进行乘法也是elementwise,使用np.dot(x, y),才是进行矩阵乘法。

import numpy as np

mat_zeros = np.zeros([3, 3])
mat_random = np.random.rand(3, 4)  #创建随机矩阵
print mat_random
mat_eye = np.eye(3)    #创建单位阵

mat_random2 = np.random.rand(3, 4)

ew_mul_result = mat_random * mat_random2  #element-wise 乘法
print ew_mul_result

mat_random3 = np.random.rand(4, 3)

mat_mul_result = np.dot(mat_random, mat_random3)#矩阵乘法
print mat_mul_result

numpy的内容很丰富,包含了大多数常用的数学运算,速度也是非常快的。具体的可以在python使用help进行查看,也可以阅读 numpy 的官方文档。再次推荐读者看看这个教程。

1.3、数学基础

1.3.1 特征距离

机器学习中,特征的距离也就是特征的相似性,用来比较两个样本的相似程度。如果是聚类的问题的话,就意味着是否需要将两个样本聚为一类。所以相似性的计算是相当重要的。
常用的相似性距离可以在该博客看到。

1.3.2 数据归一化

谈到相似性(距离),就不得不说归一化的问题了。在计算距离时,比如使用二范数,如果某个维度的数据范围特别大(0–1000),而另一个维度数据范围又很小(0–0.5),那么在计算距离的时候,范围大的对于距离的影响会特别大!也就是说范围大的数据对于距离的贡献特别大,这样会导致范围小的数据基本被忽略了,显然这不是我们想要的结果。所以,为了更好的计算相似性(也有可能有其他目的),我们必须对数据特征进行归一化。
关于数据归一化,可以看这里

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值