第一章 | 使用python机器学习
阅读全文 >
正文共1670个字,预计阅读时间10分钟。
苏小保(jacksu) 华为工程师 擅长分布式系统、大数据、机器学习。github地址:https://github.com/jacksu
python经常作为机器学习的首选,有一个统计,50%以上的机器学习开发者使用python。在学习机器学习之前需要熟悉以下几个python模块:
numpy
Python没有提供数组,列表(List)可以完成数组,但不是真正的数组,当数据量增大时,它的速度很慢。所以Numpy扩展包提供了数组支持,同时很多高级扩展包依赖它。是以矩阵为基础的数学计算模块,纯数学。SciPy
SciPy是数学,科学和工程的开源软件。 它包括用于统计,优化,集成,线性代数,傅里叶变换,信号和图像处理,ODE解算器等的模块。SciPy库依赖于NumPy,提供方便快捷的N维数组操作。比方说做个傅立叶变换,这是纯数学的,用Numpy;做个滤波器,这属于信号处理模型了,在Scipy里找。pandas
Pandas提供了一套名为DataFrame的数据结构,比较契合统计分析中的表结构,并且提供了计算接口,可用Numpy或其它方式进行计算。matplotlib & seaborn
该包主要用于绘图和绘表,强大的数据可视化工具,做图库。
现在我们开始熟悉numpy的常用操作函数:
** 一维数组 **
#encoding=utf8
import numpy as np
# 定义一维数组
a = np.array([2, 0, 1, 5, 8, 3])
print u'原始数据:', a
#输出最大、最小值及形状
print u'最小值:', a.min()
print u'最大值:', a.max()
print u'形状', a.shape
# 数据切片
print u'切片操作:'
# [:-2]后面两个两个值不取
print a[:-2]
#[-2:]表示后往前数两个数字,获取数字至结尾
print a[-2:]
#[:1]表示从头开始获取,获取1个数字
print a[:1]
# 排序
print type(a)
print a.dtype a.sort()
print u'排序后:', a
运行结果
原始数据: [2 0 1 5 8 3] 最小值: 0最大值: 8形状 (6,) 切片操作: [2 0 1 5] [8 3] [2] <type 'numpy.ndarray'> int32 排序后: [0 1 2 3 5 8]
二维数组
#二维数组操作
c = np.array([[1, 2, 3, 4], [4, 5, 6, 7], [7, 8, 9, 10]])
# 获取值
print u'形状:', c.shape
print u'获取值:', c[1][0]
print u'获取某行:'
print c[1][:]
print u'获取某行并切片:'
print c[0][:-1]
print c[0][-1:]
#获取具体某列值
print u'获取第3列:'
#np.newaxis增加一个新维度
print c[:,np.newaxis, 2]
#函数
#sin
print np.sin(np.pi/6)
print np.sin(np.pi/2)
print np.tan(np.pi/2)
print np.arange(0,4)
运行结果
形状: (3, 4) 获取值: 4获取某行: [4 5 6 7] 获取某行并切片: [1 2 3] [4] 获取第3列: [[3] [6] [9]]0.51.01.63312393532e+16[0 1 2 3]
注意,axis在numpy中表示第n个索引一个数组,在多维数组中,每个axis有一个索引,比如a = np.array([[1,2],[3,4]]),a[1,0] # to indexa, we specific 1 at the first axis and 0 at the second axis.
文中涉及源代码参见 github
参考
http://blog.****.net/eastmount/article/details/53144633
原文链接:http://www.jianshu.com/p/bdb2318c41ad
查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:
www.leadai.org
请关注人工智能LeadAI公众号,查看更多专业文章
大家都在看
TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络