MachineLearning入门-5

目标:

  • 熟悉Python基本语法
  • 熟悉Numpy、Matplotlib、Pandas,能够阅读和编写基于python的机器学习脚本
  • 为深入理解机器学习打下基础

Python速成

基本数据类型和赋值运算:字符串、数值、布尔类型、多变量赋值、空值。

在Python中,空格是有意义的,用来区分代码块。

每一种数据类型都是对象,空值是Python中的一个特殊值,用None表示,表示改值是一个空对象。可以将None赋值给任何对象,也可以将任何变量赋值给一个None值的对象。

控制语句:条件控制、循环语句、条件循环。

在Python中有三种数据类型非常有用,并且会被经常使用到。它们分别是元组、列表、字典。

元组:是一个只读的集合类型,初始化后,元组的元素不能重新赋值。

1 #元组
2 a=(1,2,3,4)
3 print(a)
4 print(a[1])
(1, 2, 3, 4)
2
列表:与元组类似,只是列表通过中括号定义,而且列表的元素可以重新赋值。对列表增加列表项使用列表的append()函数。、
 1 #列表
 2 a=[1,2,3]
 3 print(a)
 4 #增加列表项
 5 a.append(4)
 6 print(a)
 7 print(a[3])
 8 #更新列表项
 9 a[2]=5
10 print(a)
11 for i in a:
12     print(i)
[1, 2, 3]
[1, 2, 3, 4]
4
[1, 2, 5, 4]
1
2
5
4
字典:是另一种可变容器模型,且可以存储任意类型的对象。字典的每个键值对(key,value)用冒号(:)分隔。每个键值对之间用逗号(,)分隔,整个字典包括在花括号({})中。
 1 #字典
 2 mydict={'a':6.16,'b':'str','c':True}
 3 print('A vluae: %.2f' % mydict['a'])
 4 #增加字典元素
 5 mydict['a']=523
 6 print('A value: %d' % mydict['a'])
 7 print('keys: %s' % mydict.keys())
 8 print('values: %s' % mydict.values())
 9 for key in mydict:
10     print(mydict[key])
A vluae: 6.16
A value: 523
keys: dict_keys(['a', 'b', 'c'])
values: dict_values([523, 'str', True])
523
str
True
此外,若删除字典中全部元素,使用字典自身的clear()方法;若删除字典特定key元素,用pop(key)方法。
1 mydict={'a':6.18,'b':'str','c':True}
2 #删除特定元素
3 mydict.pop('a')
4 print(mydict)
5 #删除字典中全部元素
6 mydict.clear()
7 print(mydict)
{'b': 'str', 'c': True}
{}

with语句

下面是一组与上下文管理器和with语句有关的概念。
上下文管理协议(Context Management Protocol):包含方法__enter__(),__exit__(),支持该协议的对象要实现这两个方法。
上下文管理器(Context Manager):支持上下文管理协议的对象。定义执行with语句时要建立的运行时上下文,负责执行with语句块上下文中的进入与退出操作。
运行时上下文(Runtime Context):由上下文管理器创建,通过上下文管理器的__enter__(),__exit__()方法实现。__enter__()方法在语句体执行之前进入上下文,__exit__()方法在语句体执行完毕后从运行的上下文中退出。
上下文表达式(Context Expression):with语句中跟在关键字with之后的表达式,该表达式要返回一个上下文管理器对象。
语句体(with-body):with语句包裹起来的代码块,在执行语句体之前会调用上下文管理器__enter__()方法,执行完语句体之后会执行__exit__()方法。

Python对一些内建的对象进行该进,加入了对上下文管理器的支持,可以用于with语句中,比如可以自动关闭文件、线程锁的自动获取、释放。假设要对一个文件进行操作,可以使用with语句,代码如下:
1 with open('somefileName') as somefile:
2     for line in somefile:
3         print(line)
4         #... more code

这里使用了with语句,不管在处理文件过程中是否发生异常,都能保证with语句执行完毕后关闭了打开的文件句柄。如果使用传统的try/finally范式,则要使用如下代码:

1 somefile=open('somefileName')
2 try:
3     for line in somefile:
4         print(line)
5         #...more code
6 finally:
7     somefile.close()

使用with语句,简化了对异常的处理。因此,当需要对异常进行处理时,如果对象遵循了上下文管理协议,建议使用with语句来实现。

Numpy速成

Numpy为Scipy提供了基本的数据结构和运算,其中最主要的是ndarrays多维数组,它提高了高效的矢量运算功能。

访问数据

算数运算

Matplotlib速成

Matplotlib是Python中著名的2D绘图库,使用方法比较简单,按照下面的三步进行操作就能很简单的完成绘图。

  • 调用plot(),scatter()等方法,并为绘图填充数据。数据是Numpy的ndarray类型对象。
  • 设定数据标签,使用xlabel(),ylabel()方法
  • 展示绘图结果,使用show()方法

绘制线条图

下面是一个简单的绘制线条图的例子,代码如下:

 1 import matplotlib.pyplot as plt
 2 import numpy as np
 3 #定义绘图的数据
 4 myarray=np.array([[1,2,3],[2,3,4],[3,4,5]])
 5 #初始化绘图
 6 plt.plot(myarray)
 7 #设定x轴和y轴
 8 plt.xlabel('x axis')
 9 plt.ylabel('y axis')
10 #绘图
11 plt.show()

下面是一个简单的绘制散点图的例子,代码如下:

 1 #定义绘图的数据
 2 myarray1=np.array([1,2,3])
 3 myarray2=np.array([11,21,31])
 4 #初始化绘图
 5 plt.scatter(myarray1,myarray2)
 6 #设定x轴和y轴
 7 plt.xlabel('x axis')
 8 plt.ylabel('y axis')
 9 #绘图
10 plt.show()

更多类型的图表绘制砬,请参考:http://matplotlib.org/gallery.html。

Pandas速成

Pandas提供了用于机器学习的复杂数据结构:矢量运算方法和数据分析方法。Pandas也提供了多种数据结构。

  • Series:以为数组,与Numpy中的一维array类似。二者与Python基本的数据结构List也很相近,其区别:list中的元素可以使不同的数据类型,而array和series中则只允许存储相同的数据类型,这样可以更有效的使用内存,提高运算效率。
  • Time-Series:以时间为索引的Series。
  • DataFrame:二维表格型数据结构。很多功能与R语言中的data.frame类似。可以将DataFrame理解为Series的容器。
  • Panel:三维数组,可以理解为DataFrame的容器。

 Series使用:

 1 import numpy as np
 2 import pandas as pd
 3 myarray=np.array([1,2,3])
 4 index=['a','b','c']
 5 myseries=pd.Series(myarray,index=index)
 6 print(myseries)
 7 print('first element : ')
 8 print(myseries[0])
 9 print('c index value: ')
10 print(myseries['c'])
a    1
b    2
c    3
dtype: int64
first element : 
1
c index value: 
3
DataFrame是一个可以指定行和列标签的二维数组。数据可以通过指定列名来访问特定的数据。
1 myarray=np.array([[1,2,3],[2,3,4],[3,4,5]])
2 rowindex=['row1','row2','row3']
3 colname=['col1','col2','col3']
4 mydataframe=pd.DataFrame(data=myarray,index=rowindex,columns=colname)
5 print(mydataframe)
6 print('get data of col3:')
7 print(mydataframe['col3'])
      col1  col2  col3
row1     1     2     3
row2     2     3     4
row3     3     4     5
get data of col3:
row1    3
row2    4
row3    5
Name: col3, dtype: int64
更多Pandas API函数请查阅:http://pandas.pydata.org/pandas-docs/stable。




猜你喜欢

转载自www.cnblogs.com/yuzaihuan/p/12275937.html