标签归档:Python

开始学习Python

今天开始学习Pyton,主要教程是廖雪峰的官方教程,该教程确实浅显易懂!

哎,但对于本人这种菜鸟级人物,使用起来还是有些困难的,遇到了各种问题,最后只能向各种QQ群求助

1.首先是Python的按照

按照教程说明,下载了Python3.4.7,并且按照教程按照了

2.Python的编译器

这里,真心是理解错了,看到教程中提到,在命令行中输入python,就可以把python编译器调出来,所以,本人也这样做了,结果出现如下的错误

开始学习Python

之后,就开始各种求助,还好大家都和热心,按照大家的方法(百度经验里也有)配置好环境变量

右键“我的电脑“ 、点击”属性“ ,弹出对话框,选择”高级系统设置“             

 

开始学习Python   开始学习Python

在弹出的对话框中选择”环境变量“

开始学习Python

在系统变量的Path后面添加Python的按照路径(要在前一个路径加入分号)

开始学习Python 开始学习Python

按照上述步骤配置完环境变量后,发现还是出现上面提到的问题,于是,在群里各种发问,很囧的是,原来这表示已经成功进入了python了,只不过是本人输入的python不是一个python的语句(它是用来调用编译器的)

 那么,可以在命令行中利用python调用python编译器,如下所示

开始学习Python开始学习Python

这里一定要注意命令行和python的区别,在教程中有给出区别

在命令行下,可以调用python脚本文件(在命令行中输入:python 将需要运行的py文件拖入)

在python编辑器下,只能输入python语句

到底该如何入门Keras、Theano呢?(浅谈)

目前刚刚开始学习Theano,可以说是一头雾水,后来发现Keras是对Theano进行了包装,直接使用Keras可以减少很多细节程序的书写,它是模块儿化的,使用比较方便,但更为细节的内容,还没有理解,目前只是能够跑起Keras自带的例子

Keras的相关网站:Keras GitKeras Document

 

为了能够看懂Keras代码,需要的前序知识应该有:numpy、scikit-learnTheano

 

发现了两本还不错的Numpy的中文教程,说实话,看英文教程难道还是挺大的,英文太烂

NumPy攻略  Python科学计算与数据分析 [(印尼)IvanIdris著;张崇明译][人民邮电出版社][2013.10][174页](密码: ascg)

用Python做科学计算 中文版 (密码: jimb)

 

 

Keras自带的各种例examples还是很给力的

 

Python/Keras如何将给定的数据集打乱

给定数据集data,数据集对应的标签label

index = [i for i in range(len(data))]  
random.shuffle(index) 
data = data[index]
label = label[index]

(1)首先,获得数据集的所有index,其实就是0,1,2,….,num-1(这里的num是数据集中含有的examples的个数,注意,python的索引是从0开始的,所以,第一个元素索引为0,最后一个元素索引为num-1)

【数据集中函数的样本个数num=sampNum = len(data)】

index = [i for i in range(len(data))]  

  Python/Keras如何将给定的数据集打乱  

(2)将索引随机打乱顺序

random.shuffle(index)

 Python/Keras如何将给定的数据集打乱 

(3)按照新的乱序索引得到新的乱序后的data和label

data = data[index]
label = label[index]

  

Python如何进行cross validation training

以4-fold validation training为例

(1) 给定数据集data和标签集label

样本个数为

sampNum = len(data)

(2) 将给定的所有examples分为10组

每个fold个数为

foldNum = sampNum/10  

(3) 将给定的所有examples分为10组

参考scikit-learn的3.1节:Cross-validation 

 1 import np
 2 from sklearn import cross_validation
 3 # dataset
 4 
 5 data = np.array([[1,3],[2,4],[3.1,3],[4,5],[5.0,0.3],[4.1,3.1]])
 6 label = np.array([0,1,1,1,0,0])
 7 sampNum= len(data)
 8 
 9 # 10-fold (9份为training,1份为validation)
10 kf = KFold(len(data), n_folds=4)
11 iFold = 0
12 for train_index, val_index in kf:
13     iFold = iFold+1
14     X_train, X_val, y_train, y_val = data[train_index], data[val_index], label[train_index], label[val_index] # 这里的X_train,y_train为第iFold个fold的训练集,X_val,y_val为validation set

 

  

给定的数据集如下: 

 Python如何进行cross validation training  Python如何进行cross validation training

 

所有样本的指标集为:

0 1 2 3 4 5 6 7

每个iFold(共4个)的训练集和validation set的index分别为:

 iFold = 0 (训练集中包含6个examples,validation set 中包含3个examples)

Python如何进行cross validation training

iFold = 1

Python如何进行cross validation training

iFold = 2

Python如何进行cross validation training

iFold = 3

Python如何进行cross validation training

每个iFold的训练集和validation set分别为:

X_train, X_val, y_train, y_val = data[train_index], data[val_index], label[train_index], label[val_index]

  

 

Python常用函数

1. 序列整数(range函数)

Python常用函数

2. 断言assert

assert 表达式

如果表达式为Ture,则对程序没有影响,继续运行

如果表达式为False,则会抛出AssertionError,程序停止运行

例子:assert image_shape[1] != filter_shape[1]

这里的image_shape为(500,1,28,28)

filter_shape为(20,1,5,5)

可见image_shape[1] =1   ==    filter_shape[1] =1

所以,表达式assert image_shape[1] != filter_shape[1]为False,程序出错,抛出AssertionError

Python常用函数

theano安装(一)windows配置安装theano环境(非GPU版)、keras


本文目录

本文主要记录如何配置theano环境,由于本机没有gpu,所以配置的是非gpu版本的theano(安装成功后,有时对python的各种库进行更新时,可能会导致某个模块无法调用其他被更新的模块,此时,最简单傻瓜的方法就是把所有环境重新配置一次)

1.安装python

按照win7系统安装python方法按照python

2.安装theano 并配置与theano相关的环境变量

(1)安装theano
打开cmd,输入“ pip install theano”
注:pip是安装python库的一个小工具

(2)配置与theano相关的环境变量
新建环境变量pythonpath,变量值为:C:/Anaconda2/Lib/site-packages/theano;

(3)测试theano是否安装成功:import theano,未报错,theano安装成功
(4)注意事项
– 注1:后来几次安装都没有配置该环境,但并不影响theano的使用
– 注2:安装完成后,在Anaconda的/Lib/site-packages目录下会出现theano和Theano-0.7.0-py2.7.egg-info两个文件夹。

(5)安装theano的另外一种方法
在github上下载theano,用命令行进入theano文件夹,用Python命令安装theano:

python setup.py install

(6)安装过程中的错误记录
① 错误一:
Command “python setup.py egg_info failed with error code in ………..”
theano安装(一)windows配置安装theano环境(非GPU版)、keras
到底什么原因也没有理解,但推测可能与之前安装了python有关,将按照anaconda之前安装的python卸载即可

② 问题二:
pip版本太旧,对其进行更新即可,方法:

python -m pip install --upgrade pip

theano安装(一)windows配置安装theano环境(非GPU版)、keras

③ 错误三:
需要安装microsoft office vs2008
如果不想按照vs2008,可以直接安装Micorsoft Visual C++ Compiler for Python 2.7 (原来,python的扩展包需要C来编译!)
下载后,重新安装numpy (即cd到numpy目录,然后,python setup.py install),此时,numpy安装成功,错误四解决
theano安装(一)windows配置安装theano环境(非GPU版)、keras

3. 安装keras

列表内容

方法一:
首先,在github上下载keras
然后,在cmd中进入下载keras的文件夹,然后利用 python setup.py install命令安装keras
方法二:
直接在cmd中:pip install keras

4. 如何查看是否使用了BLAS加速

进入python环境,输入如下命令,如果结果为False,证明BLAS加速成功
如果结果为True,证明使用的Python自己的方法,没有BLAS加速

import numpy 
id(numpy.dot) == id(numpy.core.multiarray.dot) 
  • 运行程序,出现AttributeError: ‘module’ object has no attribute ‘relu’错误,应该是theano版本过低导致,所以,更新theano:pip install –upgrade theano
    关于unix系统的python

PyCharm使用技巧记录(一)如何查看变量

【为了方便自己以后查阅,记录下使用PyCharm时的一些小技巧】

正在学习Python,在调试Python程序时,遇到了一个非常大的问题:如何能够方便地查看变量的取值呢?

由于使用matlab多年,深深地习惯了Matlab方便地参考变量取值的功能,所以,对于正在学习的python没办法实时查看变量取值感到很是郁闷

没想到,原来PyCharm具有这个功能,只不过之前没有发现而已

对于将要调试的程序,首先,利用debug模式运行

PyCharm使用技巧记录(一)如何查看变量

程序会在断点处停下

PyCharm使用技巧记录(一)如何查看变量

在PyCharm下侧会出现如下的对话框

PyCharm使用技巧记录(一)如何查看变量

PyCharm使用技巧记录(一)如何查看变量

找到想要查看的变量,点击右键,可以看到:Add to Watches, View as array

PyCharm使用技巧记录(一)如何查看变量

可以看到,利用add to watches,变量可以被加入到watches窗口,方便查看

更方便地,可以直接在Variables窗口(或者Watches窗口)找到要查看的变量,右键View as array,可以实现类似于Matlab的数据查看效果,真的非常方便

PyCharm使用技巧记录(一)如何查看变量

 

python函数每日一讲 – chr(i)

chr(i)

中文说明:

返回整数i对应的ASCII字符。与ord()作用相反。

参数x:取值范围[0, 255]之间的正数。

版本:该函数在python2和python3各个版本中都可用。不存在兼容性问题。

英文说明:

Return a string of one character whose ASCII code is the integer i. For example, chr(97) returns the string 'a'. This is the inverse of ord(). The argument must be in the range [0..255], inclusive; ValueError will be raised if i is outside that range. See also unichr().

代码实例

>>> chr(97)
'a'
>>> chr(98)
'b'
>>> ord('a')
97
>>> ord('b')
98

ps:呵呵,这个函数和php里面的用法是一样的哦

python函数每日一讲 – dir()函数

dir()函数

中文说明:

你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。

首先,我们来看一下在输入的sys模块上使用dir。我们看到它包含一个庞大的属性列表。

接下来,我们不给dir函数传递参数而使用它——默认地,它返回当前模块的属性列表。注意,输入的模块同样是列表的一部分。

为了观察dir的作用,我们定义一个新的变量a并且给它赋一个值,然后检验dir,我们观察到在列表中增加了以上相同的值。我们使用del语句删除当前模块中的变量/属性,这个变化再一次反映在dir的输出中。

关于del的一点注释——这个语句在运行后被用来 删除 一个变量/名称。在这个例子中,del a,你将无法再使用变量a——它就好像从来没有存在过一样。

版本:

各版本中都支持该函数,python3中仍可用。

代码示例:

>>> import struct
>>> dir()   # show the names in the module namespace
['__builtins__', '__doc__', '__name__', 'struct']
>>> dir(struct)   # show the names in the struct module
['Struct', '__builtins__', '__doc__', '__file__', '__name__',
 '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
 'unpack', 'unpack_from']
>>> class Shape(object):
        def __dir__(self):
            return ['area', 'perimeter', 'location']
>>> s = Shape()
>>> dir(s)
['area', 'perimeter', 'location']

英文说明:

dir([object])

Without arguments, return the list of names in the current local scope. With an argument, attempt to return a list of valid attributes for that object.

If the object has a method named __dir__(), this method will be called and must return the list of attributes. This allows objects that implement a custom __getattr__() or __getattribute__() function to customize the way dir() reports their attributes.

If the object does not provide __dir__(), the function tries its best to gather information from the object’s __dict__ attribute, if defined, and from its type object. The resulting list is not necessarily complete, and may be inaccurate when the object has a custom __getattr__().

The default dir() mechanism behaves differently with different types of objects, as it attempts to produce the most relevant, rather than complete, information:

If the object is a module object, the list contains the names of the module’s attributes.

If the object is a type or class object, the list contains the names of its attributes, and recursively of the attributes of its bases.

Otherwise, the list contains the object’s attributes’ names, the names of its class’s attributes, and recursively of the attributes of its class’s base classes.

python每日一函数 – divmod数字处理函数

python每日一函数 – divmod数字处理函数

divmod(a,b)函数

中文说明:

divmod(a,b)方法返回的是a//b(除法取整)以及a对b的余数

返回结果类型为tuple

参数:

a,b可以为数字(包括复数)

版本:

在python2.3版本之前不允许处理复数,这个大家要注意一下

英文说明:

Take two (non complex) numbers as arguments and return a pair of numbers consisting of their quotient and remainder when using long division. With mixed operand types, the rules for binary arithmetic operators apply. For plain and long integers, the result is the same as (a // b, a % b). For floating point numbers the result is (q, a % b), where q is usually math.floor(a / b) but may be 1 less than that. In any case q * b + a % b is very close to a, if a % b is non-zero it has the same sign as b, and 0 <= abs(a % b) < abs(b).

Changed in version 2.3: Using divmod() with complex numbers is deprecated.

python代码实例:

>>> divmod(9,2)
(4, 1)
>>> divmod(11,3)
(3, 2)
>>> divmod(1+2j,1+0.5j)
((1+0j), 1.5j)