深度学习和机器学习光学习理论是远远不够的,最终还是要落实到实践上面,两个一起结合起来效果才更好,宏伦工作室带着了解一些库和运行一些python代码,记录一些干货。
近年来大数据(BigData)的概念获得不行,python已经成为机器学习热门的工具。建议安装anaconda,把与python有关的库(numpy,scipy等等)都打成一个包。pycaffe 的安装以及 notebook 环境配置是为了更方便的去使用深度学习框架。notebook 使用浏览器作为界面使用,可以编写和执行 python 代码。
从个人角度出发,在时间有限和资源有限的条件下,实现一些个人能力足以完成的、简单而有趣的数据工程和数据应用。
1.数据工程和编程语言
数据工程:采集、存储、清洗、分析、可视化
编程语言:C++、Java和Python都需要涉及,R统计分析语言,web:php、html、css、javascript
结合
- 采集:python
- 存储:python+数据库
- 清洗:python
- 分析:python+R
- 可视化:R+web
2.Python的数据类型与运算符
Python2基本语法
(1)解释性(无需编译)、交互式、面向对象、跨平台、简单好用
(2)变量名:可以包含英文、数字以及下划线,但不能以数字开头,区分大小写
(3)变量类型:弱类型语言、无需声明
- 数字Number:整型和浮点型
- 字符串String:字符串拼接、长度、切片
- 列表List:添加元素、求长、切片、删除
- 元组Tuple:readonly
- 字典:Dictionary:赋值、判断是否存在某个key
(4)注释:#,三引号
(5)保留字符:and,not,class,def,等等
(6)行和缩进
(7)运算符:
- 算术运算符:+,-,*,/,%
- 比较运算符:==,!=,>,<,>=,<=
- 赋值运算符:=,+=,-=,*=,%=
- 逻辑运算符:and,or,not
(8)条件
If…
If..else…
If…elif..else
(9)循环
while
continue
pass//占一行代码,不会执行任何操作
(10)时间:time.time()
(11)文件:读写文件
(12)异常
(13)函数:def
实战:西游记用字统计
统计《西游记》中共出现了多少个不同的汉字;每个汉字出现了多少次;出现得最频繁的汉字有哪些
设计内容:读文件、列表的使用、字典的使用、字典的排序、写文件
示例:
import sys
reloda(sys)
sys.setdefaultencoding('utf8')
import json
fr = open('xyj.txt','r')
characters = []
start = {}
for line in fr:
line = line.strip()
if len(line) == 0;
continue
line =unicode(line)
print type(line)
for x in xrange(0, leng(line));
if line[x] in [' ','\t','\n',',','。','、','【','】','“','”',':',';','(',')','《','》','‘','’','{','}','?']
continue
if not line[x] in characters:
characers.append(line[x])
if not start.has_key(line[x])
start[line[x]] = 0
start[line[x]] += 1
fw = open('result.json','w')
fw.write(json.dumps(start))
fw.close()
start = sorted(start.iteritems(),key=lambda d:d[1], reverse=True)
forx in xrange(0.20):
print characters[x]
print '*' * 20
for x in xrange(0,20):
print start[x][0],start[x][1]
fw = open('result.csv','w')
for item in start:
fw.write(item[0] + ',' + str(item[1]) + '\n')
fw.close()
fr.close()
3.数据 解读数据结构和类型
3.1数据的结构(类似地铁数据):
- 静态数据:线路、站点(不一定有时间戳,更新慢)
- 动态数据:刷卡记录(必有时间戳,不断产生)
- 时间戳:1970年1月1日0时0分0秒到现在所经历的秒数
3.2数据的组成
- 行:记录
- 列:字段、属性
- 二维数组、表
3.3数据的类型
- TXT:纯文本
- CSV:逗号分隔值(相当于二维数组)
- JSON:键值对
- SQL:数据库文件
4.爬虫 Http请求
4.1访问一个网页
url:协议 + 域名/IP + 端口 + 路由 + 参数
4.2开发者工具
显示网页源代码、检查
① Element:页面渲染之后的结构,任意调整,即时显示
② Consule:打印调试
③ Source:使用到的文件
④ NetWork:全部网络请求
4.3Http请求
Http是目前最通用的web传输协议
① GET:参数包含在url中
② POST:参数包含在数据包中,url中不可见
4.4Url类型
①html:返回html结构页面,通过浏览器渲染后呈献给用户
②API:Application Programming Interfaces,请求完后完成某些功能,例如返回数据
5.爬虫 使用urllib2获取数据
5.1 发起GET请求
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import urllib2
import urllib
import json
from bs4 import BeatyfulSoup
url = 'http://kaoshi.edu.sina.com.cn/college/scorelist?tab=batch&wl=1&local=2&batch=&syear=2
013'
request = urllib2.Request
response =urllib2.urlopen(request,timeout=20)
result = unicode(response.read())
print result
5.2发起POST请求
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import urllib2
import urllib
import json
from bs4 import BeatyfulSoup
# GET
'''
url = 'http://kaoshi.edu.sina.com.cn/college/scorelist?tab=batch&wl=1&local=2&batch=&syear=2
013'
request = urllib2.Request
response =urllib2.urlopen(request,timeout=20)
result = unicode(response.read())
print result
'''
# POST
url = 'http://shuju.wdzj.com/depth-data.html'
data = urllib.urlencode({'typel':1,'type2':2,'status':0,'wazjPlatId':59})
request = urllib2.Request(url)
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor())
result = response.read()
for key in json.loads(result).keys():
print key
5.3 处理返回结果
Html:BeautifulSoup,需要有一些 CSS 基础
API:JSON