- ?
免费的计算机编程类中文书籍,github上最火,持续更新
安天亦
展开
想进入计算机行业,修炼内功很重要,内功决定一个人的深度,学习一个框架不难,掌握框架的原理却是不那么简单。所以,业余时间充电很重要,选好书籍很重要,下面为大家介绍一个github相当火的开源项目,总有一款你喜欢的书籍在等着你,Follow me!
废话少说,直接上干货!
star数量显而易见,这是大家公认的最好的书籍项目之一。
免费的编程中文书籍索引
免费的编程中文书籍索引,欢迎投稿。(项目地址见文末)
国外程序员在 stackoverflow 推荐的程序员必读书籍,中文版。
stackoverflow 上的程序员应该阅读的非编程类书籍有哪些? 中文版
github 上的一个流行的编程书籍索引 中文版
目录
语言无关类
操作系统
智能系统
分布式系统
编译原理
函数式概念
计算机图形学
WEB服务器
版本控制
编辑器
NoSQL
PostgreSQL
MySQL
管理和监控
项目相关
设计模式
Web
大数据
编程艺术
其它
语言相关类
Android
APP
AWK
C/C++
C#
Clojure
CSS/HTML
Dart
Elixir
Erlang
Fortran
Go
Groovy
Haskell
iOS
Java
JavaScript
LaTeX
LISP
Lua
OCaml
Perl
PHP
Prolog
Python
R
Ruby
Rust
Scala
Shell
Swift
读书笔记及其它
测试相关
开源世界旅行手册
鸟哥的Linux私房菜
The Linux Command Line (中英文版)
Linux 设备驱动 (第三版)
深入分析Linux内核源码
UNIX TOOLBOX
Docker中文指南
Docker —— 从入门到实践
Docker入门实战
Docker Cheat Sheet
FreeRADIUS新手入门
Mac 开发配置手册
FreeBSD 使用手册
Linux 命令行(中文版)
Linux 构建指南
Linux工具快速教程
Linux Documentation (中文版)
嵌入式 Linux 知识库 (eLinux.org 中文版)
理解Linux进程
命令行的艺术
SystemTap新手指南
操作系统思考
一步步搭建物联网系统
走向分布式
《计算机程序的结构和解释》公开课 翻译项目
傻瓜函数编程
OpenGL 教程
WebGL自学网
Nginx开发从入门到精通 (淘宝团队出品)
Nginx教程从入门到精通(PDF版本,运维生存时间出品)
OpenResty最佳实践
Apache 中文手册
Git教程 (本文由 廖雪峰 创作,如果觉得本教程对您有帮助,可以去 iTunes 购买)
git - 简易指南
猴子都能懂的GIT入门
Git 参考手册
Pro Git
Pro Git 中文版 (整理在gitbook上)
Git Magic
GotGitHub
Git权威指南
Git Community Book 中文版
Mercurial 使用教程
HgInit (中文版)
沉浸式学 Git
Git-Cheat-Sheet (感谢 @flyhigher139 翻译了中文版)
GitHub秘籍
GitHub帮助文档
git-flow 备忘清单
svn 手册
GitHub漫游指南
exvim--vim 改良成IDE项目
笨方法学Vimscript 中译本
Vim中文文档
所需即所获:像 IDE 一样使用 vim
Atom飞行手册中文版
Markdown·简单的世界
一年成为 Emacs 高手
Emacs 生存指南
Atom官方手册
NoSQL数据库笔谈
Redis 设计与实现
Redis 命令参考
带有详细注释的 Redis 3.0 代码
带有详细注释的 Redis 2.6 代码
The Little MongoDB Book
The Little Redis Book
Neo4j 简体中文手册 v1.8
Neo4j .rb 中文資源
Disque 使用教程
Apache Spark 设计与实现
PostgreSQL 8.2.3 中文文档
PostgreSQL 9.3.1 中文文档
PostgreSQL 9.5.3 中文文档
MySQL索引背后的数据结构及算法原理
21分钟MySQL入门教程
ELKstack 中文指南
Mastering Elasticsearch(中文版)
ElasticSearch 权威指南
Elasticsearch 权威指南(中文版)
Logstash 最佳实践
Puppet 2.7 Cookbook 中文版
持续集成(第二版) (译言网)
让开发自动化系列专栏
追求代码质量
selenium 中文文档
Selenium Webdriver 简易教程
Joel谈软件
約耳談軟體(Joel on Software)
Gradle 2 用户指南
Gradle 中文使用文档
编码规范
开源软件架构
GNU make 指南
GNU make 中文手册
The Twelve-Factor App
图说设计模式
史上最全设计模式导学目录
design pattern 包教不包会
设计模式 Java 版
关于浏览器和网络的 20 项须知
浏览器开发工具的秘密
Chrome 开发者工具中文手册
Chrome扩展开发文档
Grunt中文文档
gulp中文文档
Gulp 入门指南
移动Web前端知识库
正则表达式30分钟入门教程
前端开发体系建设日记
移动前端开发收藏夹
JSON风格指南
HTTP 接口设计指北
前端资源分享(一)
前端资源分享(二)
前端代码规范 及 最佳实践
前端开发者手册
前端工程师手册
w3school教程整理
Wireshark用户手册
一站式学习Wireshark
HTTP 下午茶
HTTP/2.0 中文翻译
RFC 7540 - HTTP/2 中文翻译版
http2讲解
3 Web Designs in 3 Weeks
站点可靠性工程
大数据/数据挖掘/推荐系统/机器学习相关资源
面向程序员的数据挖掘指南
大型集群上的快速和通用数据处理架构
数据挖掘中经典的算法实现和详细的注释
Spark 编程指南简体中文版
程序员编程艺术
每个程序员都应该了解的内存知识(译)【第一部分】
取悦的工序:如何理解游戏 (豆瓣阅读,免费书籍)
OpenWrt智能、自动、透明翻墙路由器教程
SAN 管理入门系列
Sketch 中文手册
深入理解并行编程
程序员的自我修养
Growth: 全栈增长工程师指南
Android Design(中文版)
Google Material Design 正體中文版 (译本一 译本二)
Material Design 中文版
Google Android官方培训课程中文版
Android学习之路
Android开发技术前线(android-tech-frontier)
Point-of-Android Android 一些重要知识点解析整理
Android6.0新特性详解
Apache Cordova 开发指南
awk程序设计语言
awk中文指南
C/C++ 中文参考手册 (欢迎大家参与在线翻译和校对)
C 语言编程透视
C++ 并发编程指南
Linux C编程一站式学习 (宋劲杉, 北京亚嵌教育研究中心)
CGDB中文手册
100个gdb小技巧
100个gcc小技巧
ZMQ 指南
How to Think Like a Computer Scientist (中英文版)
跟我一起写Makefile(PDF)
GNU make中文手册
Google C++ 风格指南
C/C++ Primer (by @andycai)
简单易懂的C魔法
Cmake 实践 (PDF版)
C++ FAQ LITE(中文版)
C++ Primer 5th Answers
C++ 并发编程(基于C++11)
QT 教程
DevBean的《Qt学习之路2》(Qt5)
C++ Template 进阶指南
libuv中文教程
Boost 库中文教程
笨办法学C
MSDN C# 中文文档
.NET 类库参考
ASP.NET MVC 5 入门指南
超全面的 .NET GDI+ 图形图像编程教程
.NET控件开发基础
.NET开发要点精讲(初稿)
Clojure入门教程
学习CSS布局
通用 CSS 笔记、建议与指导
CSS参考手册
Emmet 文档
前端代码规范 (腾讯 AlloyTeam 团队)
HTML和CSS编码规范
Sass Guidelines 中文
CSS3 Tutorial 《CSS3 教程》
MDN HTML 中文文档
MDN CSS 中文文档
Dart 语言导览
Elixir编程入门
21天学通Erlang
Fortran77和90/95编程入门
Go编程基础
Go入门指南
学习Go语言
Go Web 编程 (此书已经出版,希望开发者们去购买,支持作者的创作)
Go实战开发 (当我收录此项目时,作者已经写完第三章,如果读完前面章节觉得有帮助,可以给作者捐赠,以鼓励作者的继续创作)
Network programming with Go 中文翻译版本
Effective Go
Go 语言标准库
Golang标准库文档
Revel 框架手册
Java程序员的Golang入门指南
Go命令教程
Go语言博客实践
Go 官方文档翻译
深入解析Go
Go语言圣经(中文版) (GitBook)
实战 Groovy 系列
Real World Haskell 中文版
Haskell趣学指南
iOS开发60分钟入门
iOS7人机界面指南
Google Objective-C Style Guide 中文版
iPhone 6 屏幕揭秘
Apple Watch开发初探
马上着手开发 iOS 应用程序
网易斯坦福大学公开课:iOS 7应用开发字幕文件
Apache Shiro 用户指南
Jersey 2.x 用户指南
Spring Framework 4.x参考文档
Spring Boot参考指南 (翻译中)
MyBatis中文文档
MyBatis Generator 中文文档
用jersey构建REST服务
Activiti 5.x 用户指南
Google Java编程风格指南
Netty 4.x 用户指南
Netty 实战(精髓)
REST 实战
Java 编码规范
Apache MINA 2 用户指南
H2 Database 教程
Java Servlet 3.1 规范
JSSE 参考指南
Java开源实现及最佳实践
Java 编程要点
Think Java
Java 8 简明教程
Google JavaScript 代码风格指南
Google JSON 风格指南
Airbnb JavaScript 规范
JavaScript 标准参考教程(alpha)
Javascript编程指南 (源码)
javascript 的 12 个怪癖
JavaScript 秘密花园
JavaScript核心概念及实践 (PDF) (此书已由人民邮电出版社出版发行,但作者依然免费提供PDF版本,希望开发者们去购买,支持作者)
《JavaScript 模式》 “JavaScript patterns”中译本
命名函数表达式探秘 (注:原文由为之漫笔翻译,原始地址无法打开,所以此处地址为我博客上的备份)
学用 JavaScript 设计模式 (开源中国)
深入理解JavaScript系列
ECMAScript 5.1 中文版
ECMAScript 6 入门 (作者:阮一峰)
JavaScript Promise迷你书
You-Dont-Know-JS (深入JavaScript语言核心机制的系列图书)
JavaScript 教程 廖雪峰
MDN JavaScript 中文文档
jQuery
jQuery 解构
简单易懂的JQuery魔法
How to write jQuery plugin
You Don't Need jQuery
如何实现一个类jQuery?
Node.js
Node入门
七天学会NodeJS
Nodejs Wiki Book (繁体中文)
express.js 中文文档
koa 中文文档
一起学koa
使用 Express + MongoDB 搭建多人博客
Express框架
Node.js 包教不包会
Learn You The Node.js For Much Win! (中文版)
Node debug 三法三例
nodejs中文文档
orm2 中文文档
underscore.js
Underscore.js中文文档
backbone.js
backbone.js中文文档
backbone.js入门教程 (PDF)
Backbone.js入门教程第二版
Developing Backbone.js Applications(中文版)
AngularJS
AngularJS最佳实践和风格指南
AngularJS中译本
AngularJS入门教程
构建自己的AngularJS
在Windows环境下用Yeoman构建AngularJS项目
Zepto.js
Zepto.js 中文文档
Sea.js
Hello Sea.js
React.js
React.js 中文文档
React webpack-cookbook
React 入门教程
React Native 中文文档(含最新Android内容)
Learn React & Webpack by building the Hacker News front page
impress.js
impress.js的中文教程
CoffeeScript
CoffeeScript Cookbook
The Little Book on CoffeeScript中文版
CoffeeScript 编码风格指南
TypeScipt
TypeScript Handbook
ExtJS
Ext4.1.0 中文文档
Meteor
Discover Meteor
Meteor 中文文档
Angular-Meteor 中文教程
Chrome扩展及应用开发
一份其实很短的 LaTeX 入门文档
一份不太简短的 LATEX 2ε 介绍 (PDF版)
Common Lisp
ANSI Common Lisp 中文翻譯版
On Lisp 中文翻译版本
Scheme
Racket book
Yet Another Scheme Tutorial Scheme入门教程
Scheme语言简明教程
Racket
Lua编程入门
Lua 5.1 参考手册 中文翻译
Lua 5.3 参考手册 中文翻译
Lua源码欣赏
Real World OCaml
Modern Perl 中文版
Perl 程序员应该知道的事
PHP 官方手册
PHP调试技术手册(PDF)
PHP之道:php-the-right-way (@wulijun版 PHPHub版)
PHP 最佳实践
PHP 开发者实践
深入理解PHP内核
PHP扩展开发及内核应用
Laravel5.1 中文文档
Laravel 5.1 LTS 速查表
Symfony2 Cookbook 中文版(版本 2.7.0 LTS)
Symfony2中文文档 (未译完)
YiiBook几本Yii框架的在线教程
深入理解 Yii 2.0
Yii 框架中文文檔
简单易懂的PHP魔法
swoole文档及入门教程
Composer 中文网
Slim 中文文档
Lumen 中文文档
PHPUnit 中文文档
笨办法学Prolog
廖雪峰 Python 2.7 中文教程
廖雪峰 Python 3 中文教程
简明Python教程
零基础学 Python 第一版
零基础学 Python 第二版
可爱的 Python
Python 2.7 官方教程中文版
Python 3.3 官方教程中文版
Python Cookbook 中文版
Python3 Cookbook 中文版
深入 Python
深入 Python 3
PEP8 Python代码风格规范
Google Python 风格指南 中文版
Python入门教程 (PDF)
笨办法学 Python (PDF EPUB)
Python自然语言处理中文版 (感谢陈涛同学的翻译,也谢谢 @shwley 联系了作者)
Python 绘图库 matplotlib 官方指南中文翻译
Scrapy 0.25 文档
ThinkPython
ThinkPython 2ed
Python快速教程
Python 正则表达式操作指南
python初级教程:入门详解
Twisted 与异步编程入门
TextGrocery 中文 API ( 基于svm算法的一个短文本分类 Python 库 )
Requests: HTTP for Humans
Pillow 中文文档
PyMOTW 中文版
Python 官方文档中文版
Fabric 中文文档
Beautiful Soup 4.2.0 中文文档
用Pythonå�...
- ?
深度学习入门必看---吴恩达深度学习课程
费香魔
展开
吴恩达今天分享的是吴恩达的深度学习课程。吴恩达是人工智能领域的大牛,著作颇丰,其推出的机器学习课程在学生之中反响强烈,深受中国学生的推崇。在众多网友,学生,工作者的呼吁下,2017年8月,吴恩达推出了自己的深度学习课程,由于长时间拖更,经常被网友吐槽,最终在今年的时候全部更新完毕。考虑到中国学生对课程的喜爱,吴恩达和网易云课程合作,提供带有中文字幕的学习视频。
吴恩达课程简介:
课程总共分为5个部分:卷积网络和深度学习,改善深层神经网络,结构化机器学习项目,卷积神经网络,序列模型。在五门课程中,将学习深度学习的基础知识,了解如何构建神经网络,并学习如何实践机器学习项目,学习卷积网络,RNN,LSTM,Adam,Dropout,BatchNorm,Xavier/He初始化等等。同时可以了解医疗,自动驾驶,手语阅读,音乐创作和自然语言处理的案例研究,掌握深度学习的基础理论,还会看到它在工业中的应用。课程的内容都将在Python和TensorFlow的练习中所实现。最后,课程末尾都有学术大牛的经验分享,可以听到许多深度学习的高层领导,他们将与你分享他们的个人故事,并为你提供职业建议。
课程内容:
01. 神经网络和深度学习
神经网络概论 主要介绍:神经网络的概念、深度学习兴起的原因、课程内容等;神经网络基础 主要介绍:logistic回归、损失函数、梯度下降、计算向量化、代价函数等;编程作业:使用Numpy的基础Python、logistic回归浅层神经网络 主要介绍:神经网络、激活函数、梯度下降法、反向传播、随机初始化等;编程作业:使用浅层神经网络实现平面数据分类深层神经网络 主要介绍:深度神经网络、DNN的前向和反向传播、参数和超参数等;编程作业:构建DNN、DNN用于图片分类02. 改善深层神经网络:超参数调试、正则化以及优化
深度学习的实践方面 主要介绍:训练测试集划分、偏差和方差、正则化、Dropout、输入归一化、梯度消失与梯度爆炸、权重初始化、梯度检验等;编程作业:初始化、正则化、梯度检验优化算法 主要介绍:Mini-batch梯度下降、指数加权平均、Momentum梯度下降、RMSprop、Adam优化算法、衰减学习率、局部最优等;编程作业:多种优化算法超参数调试和Batch Norm及框架 主要介绍:超参数的调试、Batch Normalization、Softmax、TensorFlow程序框架等;编程作业:TensorFlow简单教程03. 结构化机器学习项目
机器学习策略(1) 主要介绍:正交化、单一数字评估指标、训练/开发/测试集、偏差和方差、改善模型的表现等;机器学习策略(2) 主要介绍:误差分析、错误样本清除、数据分布不匹配问题、迁移学习、多任务学习、端到端的深度学习等;04. 卷积神经网络
卷积神经网络基础 主要介绍:计算机视觉、边缘检测、卷积神经网络、Padding、卷积、池化等;编程作业:构建卷积神经网络、手势识别应用卷积神经网络实例模型 主要介绍:AlexNet、LeNet、VGG、ResNet、Inception Network、1乘1卷积、迁移学习、数据扩充等;编程作业:Keras教程-the Happy House、Residual Networks目标检测 主要介绍:目标定位、目标检测、Bounding Box预测、交并比、非最大值抑制NMS、Anchor box、YOLO算法、候选区域region proposals等;编程作业:自动驾驶-汽车检测特殊应用:人脸识别和神经风格迁移 主要介绍:人脸识别、one-shot学习、Siamese网络、Triplet损失、风格迁移、内容损失、风格损失、1D-3D卷积等;编程作业:人脸识别-Happy House、神经风格迁移-深度学习和艺术05. 序列模型
循环神经网络 主要介绍:循环神经网络、不同类型的RNN、语言模型、新序列采样、RNN梯度消失、GRU、LSTM、双向RNN、深层RNNs等;编程作业:构建RNN、字母级的语言模型-Dinosaurus land、用LSTM即兴创作Jazz自然语言处理和词嵌入 主要介绍:词汇表征、Word Embedding、嵌入矩阵、Word2Vec、负采样、GloVe词向量、情感分类、词嵌入消除偏见等;编程作业:词向量运算、Emojify序列模型和注意力机制 主要介绍:序列到序列模型、集束搜索(Beam search)、集束搜索误差分析、Bleu得分、注意力模型、注意力权重、语音识别、触发字检测等;编程作业:机器翻译、触发字检测
相关搜索
- 神经网络算法
- 机器学习
- 人工神经网络
- 神经网络原理
- bp神经网络
- 人工智能神经网络
- ?
对比了 18000 个 Python 项目,这 TOP45 值得学习!
吴梦菲
展开
点击上方“CSDN”,选择“置顶公众号”
关键时刻,第一时间送达!
图片来源:edureka.co
翻译 | 林椿眄
编辑 | Donna
出品 | 人工智能头条
【导读】热门资源博客 Mybridge AI 比较了 18000 个关于 Python 的项目,并从中精选出 45 个最具竞争力的项目。我们进行了翻译,在此一并送上。
这份清单中包括了各不相同的 20 个主题,以及一些资深程序员分享使用 Python 的经验,值得收藏。Mybridge AI 的排名结合了内部机器评估的内容质量和各种人为因素,包括阅读次数和阅读时长等。
对于 Python 的初学者,我们推荐以下这些课程:
REST API:使用 Python,Flask,Flask-RESTful 和 Flask-SQLAlchemy 构建专业的 REST API [12,602 个推荐,4.6 / 5 星]
链接:https://udemy/rest-api-flask-and-python/
算法交易:用于财务分析和算法交易的 Python,主要学习包括 numpy,pandas,matplotlib,quantopian,finance [8,077 个推荐,4.6 / 5 星]
链接:https://udemy/python-for-finance-and-trading-algorithms/
年度开源 Python 项目 [平均 4,078 星]
链接:https://medium.mybridge.co/30-amazing-python-projects-for-the-past-year-v-2018-9c310b04cdb3
机器学习年度最佳文章
链接:https://medium.mybridge.co/learn-to-build-a-machine-learning-application-from-top-articles-of-2017-cdd5638453fc
Python 算法
① 回顾 Python 交互式编码中所要面对的挑战(算法和数据结构)
本文对算法编码和数据结构中的问题提出了简单易懂又切实可行的方案。
作者:Donne Martin;[github-11811 星]链接:https://github/donnemartin/interactive-coding-challenges
② Python 中算法和数据结构的最小样本
如何让 Python 中的数据结构和算法最小、最干净?
作者:keon;[github-10271 星]链接:https://github/keon/algorithms
③ 最重要的 Python 算法--Pygorithm
Pygorithm 是一个纯 Python 风格编写的模块,通过导入所需的算法,获得相应的代码、时间复杂性等。这是一个开始学习 Python 编程的好方法,能够帮助初学者学习并实现 Python 中所有算法。
作者:Satwik Kansal;[github-3156 星]链接:http://pygorithm.readthedocs.io/en/latest/
Python 综合指南
④ 一个有趣又鲜为人知的 Python 代码片段集合—wtfPython
作者:Satwikkansal;[github-4,933 星]链接:https://github/satwikkansal/wtfPython
Python 的脚本结构
⑤ 一个关于如何从 Python 脚本到打包项目的标准化指南
作者:Courtesy of Vicki链接:http://veekaybee.github.io/2017/09/26/python-packaging
Python 中的列表
⑥ Python 列表生成器的教程
在这份教程中,你将能够学习到如何在 Python 中有效地使用列表生成器来创建列表,替换(嵌套) for 循环以及使用 map(), filter(), reduce() 函数等。
文章首先简单回顾了 Python 中列表的基本概念,并与 Python 中其他的数据结构进行比较。接着讲解了列表生成器的学习。文章还讲解了 Python 列表背后的数学知识,创建列表生成器的方法,以及如何在 for 循环或 lambda 隐函数中重写它们。
作者:Karlijn Willems链接:https://datacamp/community/tutorials/python-list-comprehension
Python 中的类
⑦ 如何使用 Dunder (Magic、Special) 方法来丰富你的 Python 类
Dunker 是 Python 中的一种特殊方法,通过双下划线开始和结束的形式存在,例如 __init__ 来丰富类的预定义方法。
作者:Dan Bader链接:https://dbader.org/blog/python-dunder-methods
Python 中的网页抓取
⑧ 如何使用 Python 中的 Scrapy、SQL 和 Matplotlib 等库进行网页抓取,并获取网页数据分析
你可以通过这篇文章学习到网页爬取知识,并用于实践中。
作者:ScrapingAuthority链接:http://scrapingauthority/python-scrapy-mysql-and-matplotlib-to-gain-web-data-insights/
⑨ 高级的网页抓取教程:绕过“403 禁止”,验证码等问题
作者:Evan Sangaline链接:http://sangaline/post/advanced-web-scraping-tutorial/
⑩ 掌握 Python 的网页抓取技巧来获取你所需要的数据
作者:Lauren Glass 和 Hackernoon链接:https://hackernoon/mastering-python-web-scraping-get-your-data-back-e9a5cc653d88
Python 中的自动化操作
如何使用 Twilio、Python 和 Google 自动化婚礼的进程
作者:Thomas Curtis链接:https://twilio/blog/2017/04/wedding-at-scale-how-i-used-twilio-python-and-google-to-automate-my-wedding.html
如何用 Python 在 Medium 上找到有趣的人
作者:Radu Raicea 和 freeCodeCamp。链接:https://medium.freecodecamp.org/how-i-used-python-to-find-interesting-people-on-medium-be9261b924b0
Python 中的 Bot
制作 Reddit+Facebook 的信息箱
作者:Yasoob Khalid链接:https://pythontips/2017/04/13/making-a-reddit-facebook-messenger-bot/
我在 Instagram 上用 Python 写的开源机器人(让我拥有了 2500 个粉丝,所花的服务器成本只有 5 美元)
作者:TimG链接:https://medium.freecodecamp.org/my-open-source-instagram-bot-got-me-2-500-real-followers-for-5-in-server-costs-e40491358340
Python 中的电子表格
权威指南:Python 的 Excel 教程
通过这个教程,你可以了解如何使用 Python 读取和导入 Excel 文件,如何将数据写入这些电子表格。
作者:Karlijn Willems链接:https://datacamp/community/tutorials/python-excel-tutorial
Python 和 Googgle 电子表格
作者:Brent Schooley链接:https://youtube/watch?v=vISRn5qFrkM
Python 中的金融应用
Python 中的金融:算法交易
这是一份 Python 与金融应用的教程,在此你能学习到算法交易的基本知识及相关内容。
作者:Karlijn Willems链接:https://datacamp/community/tutorials/finance-python-trading
Python 中的金融教程—股票价格及相关数据介绍
作者:Harrison Kinsley链接:https://youtube/watch?v=2BrpKpWwT2A
用 Python 分析加密货币市场
比特币市场是如何表现?加密货币价值突然出现高峰和低谷的原因是什么?不同 altcoins 市场是不可分割的或基本独立的? 我们如何预测接下来会发生什么?
这篇文章将简单地介绍如何使用 Python 来分析加密货币。文章通过一个简单的 Python 脚本来检索,分析和可视化不同加密货币上的数据。在这个过程中,文章还将揭示这些波动剧烈的市场行为以及一个有趣的演变趋势。
作者:Patrick Triest链接:https://blog.patricktriest/analyzing-cryptocurrencies-python/
Python 中的区块链
学习并构建一个区块链
毫无疑问,区块链这项新颖的技术是计算的奇迹。区块链技术的出现引发了新的全数字货币,如比特币和莱特币,而这些货币并非由中央当局发行或管理。区块链也以 Ethereum 这样的技术形式革命化了分布式计算,并引入了智能合约等有趣的概念。
这篇文章将会帮助你学习并理解区块链的工作原理。通过这篇教程,你将学习到一个功能强大的区块链,并掌握它们的工作流程。
作者:Daniel van Flymen 和 Hackernoon链接:https://hackernoon/learn-blockchains-by-building-one-117428612f46
如何构建一个最小的区块链
本文将用少于 50 行的代码(Python2)来创建一个最简单、最小的区块链。
作者:Gerald Nash链接:https://medium/crypto-currently/lets-build-the-tiniest-blockchain-e70965a248b
Python 中的视频合成
用 Python 构建一个视频合成器
视频合成器是利用音频输入来创建视觉信号的设备,自上世纪 60 年代以来,已有很长的历史。
这篇文章将用 Python 编写一个基本的视频合成器,并使用 aubio 进行 Onset 目标检测。
作者:Kirk Kaiser链接:https://makeartwithpython/blog/video-synthesizer-in-python/
Python 的性能
用 Python 处理每秒 100 万个请求
用 Python 每秒能够达到 100 万个请求吗?为了节省服务器价格,最近很多公司正在从 Python 向其他编程语言中迁移。但实际并不需要。
Python 社区最近在性能提升方面做了很多工作。CPython 3.6 通过新的字典提高了整体解释器的性能。由于引入了更快的调用约定和字典查找缓存,CPython 3.7 将会更快。
对于数字处理任务,你可以使用 PyPy 进行代码编译。你还可以运行 NumPy 的测试套件,该测试套件现在已经改进了 Python 与 C 语言扩展的整体兼容性。在随后的更新版本中,PyPy 预计将与 Python 3.5 兼容。
作者:Pawe Piotr Przeradowski。链接:https://medium.freecodecamp.org/million-requests-per-second-with-python-95c137af319
“Python 很慢,但我不在乎”
这篇文章将介绍一些关于 Python 中 asyncio 的内容,并讨论有关 Python 速度的问题。
作者:Nick Humrich链接:https://hackernoon/yes-python-is-slow-and-i-dont-care-13763980b5a1
Python 中的缓存:如何缓存函数的结果
文章将介绍一种快捷的方法来加速 Python 记忆代码。你将看到何时以及如何运用 Python 记忆代码。记忆代码优化你的程序,在某些情况下会加速你的代码运行。
链接:https://dbader.org/blog/python-memoization
Python 中的 Django 框架
七步骤带你完整地学习 Django
Django 是用 Python 编写的一个 Web 框架。这篇文章是介绍 Django 基础知识的系列教程,共分为七个部分,将分别从安装,准备开发环境,模型,视图,模板,URL 到更高级的主题(如迁移,测试和部署)出发,详细探讨所有的基本概念。
作者:Vitor Freitas链接:https://simpleisbetterthancomplex/series/2017/09/04/a-complete-beginners-guide-to-django-part-1.html
使用 Django 构建 REST API 的测试驱动方法:第一部分
这篇文章将介绍如何利用 Django 来构建一个 REST API 的测试驱动,并详细介绍了每个步骤。
作者:Jee Githinji Gikera 和 Scotch Development链接:https://scotch.io/tutorials/build-a-rest-api-with-django-a-test-driven-approach-part-1
Python 中的 Flake
OI’List 规则
这篇博文中我们将介绍 Flake8(pyflakes,pycodestyle 和 mccabe)中的每个规则及相对应的示例。
链接:https://lintlyci.github.io/Flake8Rules/
使用 Python 和 Flask 开发 RESTful API
本文包括以下几部分:
为什么用 Python?什么是 Flask?引导 Flask 应用程序用 Flask 创建一个 RESTful 端点用 Python 类映射模型用 Marshmallow 进行序列化和反序列化对象Dockerizing Flask 应用程序用 Auth0 保护 Python API作者:Bruno Krebs链接:https://auth0/blog/developing-restful-apis-with-python-and-flask/
Python 中的 Numpy
从 Python 到 Numpy
本文通过一种新颖的方式,向量化地集中讲解了如何从 Python 迁移到 Numpy 的学习。另外,本文还包括一些很少提到的使用技巧。
链接:http://labri.fr/perso/nrougier/from-python-to-numpy/
探索 Python 每种工具包的行长度
本文探索了 Python 的流行包,如 NumPy,SciPy,Pandas,Scikit-Learn,Matplotlib,AstroPy 等。
作者:Jake VanderPlas链接:http://jakevdp.github.io/blog/2017/11/09/exploring-line-lengths-in-python-packages/
Python 中的 NashPy
NashPy 教程—建立并找到一种简单的游戏平衡
博弈论是用来研究理性主体之间的战略互动:当双方试图采用对各自最有益的方式来完成某件事情时,对双方互动行为的研究。这篇文章将采用 Python 中的 NashPy 来研究这种双方博弈的互动行为。
链接:http://nashpy.readthedocs.io/en/latest/tutorial/
Python 中的马尔可夫过程
用 Python 模拟 Chutes 和 Ladders
这篇文章将通过 Chutes 和 Ladders 游戏的例子,建立模型并阐述马尔可夫过程的原理。整个分析过程附有 Python 源码,感兴趣的读者可以尝试一下。
作者:Jake VanderPlas链接:http://jakevdp.github.io/blog/2017/12/18/simulating-chutes-and-ladders/
Python 中的数据分析
用 Python 分析美国联邦政治行为
科学、政治、个人意见和社会政策的交集可能呈现相当复杂的情况。思想和学科的交汇点通常充斥着有争议的观点和基于信仰但缺乏经验证据的议程。这时,数据科学在这方面就显得特别重要,因为它提供了一种以实际事实为基础的考察世界的方法,能够深入了解我们今天所面临的一些最重要的问题。
这篇文章我们将用 Python 来分析美国联邦政府的一些政治行为,深入了解政治背后所隐藏的故事。
作者:Patrick Triest链接:https://blog.patricktriest/police-data-python/
用 Python 分析 1000+ 的希腊葡萄酒
作者:Florents Tselai链接:https://tselai/greek-wines-analysis.html
如何用 Python 生成 FiveThirtyEight 图
这篇文章将用 Python 的 matplotlib 和 pandas,来学习并查看 FiveThirtyEight(FTE)可视化的核心部分,并教会你使用 Python 来为自己的数据进行可视化。
作者:Josh Devlin链接:https://dataquest.io/blog/making-538-plots/
使用 Apache Spark 和 Python 为 8000 万 Amazon 产品进行评价打分
作者编写了一个简单的 Python 脚本,将亚马逊产品评论数据集中的每类评分数据进行整合,并对这些 Amazon 产品评论数据进行分析打分,以发现用户的喜好。
作者:Max Woolf链接:http://minimaxir/2017/01/amazon-spark/
使用 Python 进行地理空间分析
作者:Matthew Rocklin链接:https://matthewrocklin/blog//work/2017/09/21/accelerating-geopandas-1
星球:从太空中了解亚马逊,来自 Kaggle 头奖获奖者的采访
文章采访了 Kaggle 的“星球:从太空中了解亚马逊”竞赛的获奖者,内容包括他如何使用 11 个微调的卷积神经网络,标签关联的结构模型,以及如何避免过拟合现象等。
作者:Edwin Chen链接:http://blog.kaggle/2017/10/17/planet-understanding-the-amazon-from-space-1st-place-winners-interview/
...
- ?
NLP入门+实战必读:一文教会你最常见的10种自然语言处理技术
EC
展开
大数据文摘作品
编译:糖竹子、吴双、钱天培
自然语言处理(NLP)是一种艺术与科学的结合,旨在从文本数据中提取信息。在它的帮助下,我们从文本中提炼出适用于计算机算法的信息。从自动翻译、文本分类到情绪分析,自然语言处理成为所有数据科学家的必备技能之一。
在这篇文章中,你将学习到最常见的10个NLP任务,以及相关资源和代码。
为什么要写这篇文章?
对于处理NLP问题,我也研究了一段时日。这期间我需要翻阅大量资料,通过研究报告,博客和同类NLP问题的赛事内容学习该领域的最新发展成果,并应对NLP处理时遇到的各类状况。
因此,我决定将这些资源集中起来,打造一个对NLP常见任务提供最新相关资源的一站式解决方案。下方是文章中提到的任务列表及相关资源。那就一起开始吧。
目录:
1. 词干提取2. 词形还原3. 词向量化4. 词性标注5. 命名实体消岐6. 命名实体识别7. 情感分析8. 文本语义相似分析9. 语种辨识10. 文本总结
1. 词干提取
什么是词干提取?词干提取是将词语去除变化或衍生形式,转换为词干或原型形式的过程。词干提取的目标是将相关词语还原为同样的词干,哪怕词干并非词典的词目。例如,英文中:
1.beautiful和beautifully的词干同为beauti2.Good,better和best 的词干分别为good,better和best。
相关论文:Martin Porter的波特词干算法原文
相关算法:在Python上可以使用Porter2词干算法(https://tartarus.org/martin/PorterStemmer/def.txt)
程序实现:这里给出了在python的stemming库中使用(https://bitbucket.org/mchaput/stemming/src/5c242aa592a6d4f0e9a0b2e1afdca4fd757b8e8a/stemming/porter2.py?at=default&fileviewer=file-view-default)
Porter2算法做词干提取的代码:
#!pip install stemmingfrom stemming.porter2 import stemstem("casually")
2. 词形还原
什么是词形还原? 词形还原是将一组词语还原为词源或词典的词目形式的过程。还原过程考虑到了POS问题,即词语在句中的语义,词语对相邻语句的语义等。例如,英语中:
1.beautiful和beautifully被分别还原为beautiful和beautifully。2.good, better和best被分别还原为good, good和good
相关论文1: 这篇文章详细讨论了词形还原的不同方法。想要了解传统词形还原的工作原理必读。(http://ijrat.org/downloads/icatest2015/ICATEST-2015127.pdf)
相关论文2: 这篇论文非常出色,讨论了运用深度学习对变化丰富的语种做词形还原时会遇到的问题。(https://academic.oup/dsh/article-abstract/doi/10.1093/llc/fqw034/2669790/Lemmatization-for-variation-rich-languages-using)
数据集: 这里是Treebank-3数据集的链接,你可以使用它创建一个自己的词形还原工具。(https://catalog.ldc.upenn.edu/ldc99t42)
程序实现:下面给出了在spacy上的英语词形还原代码
#!pip install spacy#python -m spacy download enimport spacynlp=spacy.load("en")doc="good better best"for token in nlp(doc): print(token,token.lemma_)
3. 词向量化
什么是词向量化?词向量化是用一组实数构成的向量代表自然语言的叫法。这种技术非常实用,因为电脑无法处理自然语言。词向量化可以捕捉到自然语言和实数间的本质关系。通过词向量化,一个词语或者一段短语可以用一个定维的向量表示,例如向量的长度可以为100。
例如:“Man”这个词语可以用一个五维向量表示。
这里的每个数字代表了词语在某个特定方向上的量级。
相关博文:这篇文章详细解释了词向量化。
(https://analyticsvidhya/blog/2017/06/word-embeddings-count-word2veec/)
相关论文:这篇论文解释了词向量化的细节。深入理解词向量化必读。
(https://analyticsvidhya/blog/2017/10/essential-nlp-guide-data-scientists-top-10-nlp-tasks/)
相关工具:这是个基于浏览器的词向量可视化工具。
(https://ronxin.github.io/wevi/)
预训练词向量:这里有一份facebook的预训练词向量列表,包含294种语言。
(https://github/facebookresearch/fastText/blob/master/pretrained-vectors.md)
这里可以下载google news的预训练词向量。
(https://drive.google/file/d/0B7XkCwpI5KDYNlNUTTlSS21pQmM/edit)
#!pip install gensimfromgensim.models.keyedvectors import KeyedVectorsword_vectors=KeyedVectors.load_word2vec_format('GoogleNews-vectors-negative300.bin',binary=True)word_vectors['human']
程序实现:这段代码可以用gensim训练你自己的词向量
sentence=[['first','sentence'],['second','sentence']]model = gensim.models.Word2Vec(sentence, min_count=1,size=300,workers=4)
4. 词性标注
什么事词性标注?简单来说,词性标注是对句子中的词语标注为名字、动词、形容词、副词等的过程。例如,对句子“Ashok killed the snake with a stick”,词性标注会识别:
Ashok 代词killed 动词the 限定词snake 名词with 连词a 限定词stick 名词. 标点
论文1:
choi aptly的这篇《The Last Gist to theState-of-the-Art 》介绍了一种叫动态特征归纳的新方法。这是目前词性标注最先进的方法。(https://aclweb.org/anthology/N16-1031.pdf)
论文2:这篇文章介绍了通过隐马尔科夫模型做无监督词性标注学习的方法。(https://transacl.org/ojs/index.php/tacl/article/viewFile/837/192)
程序实现:这段代码可以在spacy上做词性标注
#!pip install spacy#!python -m spacy download en nlp=spacy.load('en')sentence="Ashok killed the snake with a stick"for token in nlp(sentence): print(token,token.pos_)
5. 命名实体消歧
什么是命名实体消岐?命名实体消岐是对句子中的提到的实体识别的过程。例如,对句子“Apple earned a revenue of 200 Billion USD in 2016”,命名实体消岐会推断出句子中的Apple是苹果公司而不是指一种水果。一般来说,命名实体要求有一个实体知识库,能够将句子中提到的实体和知识库联系起来。
论文1:Huang的这篇论文运用了基于深度神经网络和知识库的深层语义关联模型,在命名实体消岐上达到了领先水平。
(https://arxiv.org/pdf/1504.07678.pdf)
论文2:Ganea and Hofmann的这篇文章运用了局部神经关注模型和词向量化,没有人为设置特征。(https://arxiv.org/pdf/1704.04920.pdf)
6. 命名实体识别
体识别是识别一个句子中有特定意义的实体并将其区分为人名,机构名,日期,地名,时间等类别的任务。例如,一个NER会将一个这样的句子:
“Ram of Apple Inc. travelled to Sydney on 5th October 2017”
返回如下的结果:
Ram ofApple ORGInc. ORGtravelledtoSydney GPEon5th DATEOctober DATE2017 DATE
这里,ORG代表机构组织名,GPE代表地名。
然而,当NER被用在不同于该NER被训练的数据领域时,即使是最先进的NER也往往表现不佳。
论文:这篇优秀的论文使用双向LSTM(长短期记忆网络)神经网络结合监督学习和非监督学习方法,在4种语言领域实现了命名实体识别的最新成果。(https://arxiv.org/pdf/1603.01360.pdf)
程序实现:以下是如何使用spacy执行命名实体识别。
import spacynlp=spacy.load('en')sentence="Ram of Apple Inc. travelled to Sydney on 5th October 2017"for token in nlp(sentence): print(token, token.ent_type_)
7. 情感分析
什么是情感分析?情感分析是一种广泛的主观分析,它使用自然语言处理技术来识别客户评论的语义情感,语句表达的情绪正负面以及通过语音分析或书面文字判断其表达的情感等等。例如:
“我不喜欢巧克力冰淇淋”—是对该冰淇淋的负面评价。
“我并不讨厌巧克力冰激凌”—可以被认为是一种中性的评价。
从使用LSTMs和Word嵌入来计算一个句子中的正负词数开始,有很多方法都可以用来进行情感分析。
博文1:本文重点对电影推文进行情感分析(https://analyticsvidhya/blog/2016/02/step-step-guide-building-sentiment-analysis-model-graphlab/)
博文2:本文重点对印度金奈洪水期间的推文进行情感分析。(https://analyticsvidhya/blog/2017/01/sentiment-analysis-of-twitter-posts-on-chennai-floods-using-python/)
论文1:本文采用朴素贝叶斯的监督学习方法对IMDB评论进行分类。(https://arxiv.org/pdf/1305.6143.pdf)
论文2:本文利用LDA的无监督学习方法来识别用户生成评论的观点和情感。本文在解决注释评论短缺的问题上表现突出。(http://cs.cmu.edu/~yohanj/research/papers/WSDM11.pdf)
资料库:这是一个很好的包含相关研究论文和各种语言情感分析程序实现的资料库。(https://github/xiamx/awesome-sentiment-analysis)
数据集1:多域情感数据集版本2.0(http://cs.jhu.edu/~mdredze/datasets/sentiment/)
数据集2:Twitter情感分析数据集(http://sananalytics/lab/twitter-sentiment/)
竞赛:一个非常好的比赛,你可以检查你的模型在烂番茄电影评论的情感分析任务中的表现。(https://kaggle/c/sentiment-analysis-on-movie-reviews)
8. 语义文本相似度
什么是语义文本相似度分析?语义文本相似度分析是对两段文本的意义和本质之间的相似度进行分析的过程。注意,相似性与相关性是不同的。
例如:
汽车和公共汽车是相似的,但是汽车和燃料是相关的。
论文1:本文详细介绍了文本相似度测量的不同方法。是一篇可以一站式了解目前所有方法的必读文章。(https://pdfs.semanticscholar.org/5b5c/a878c534aee3882a038ef9e82f46e102131b.pdf)
论文2:本文介绍了用CNN神经网络去比对两个短文本。(http://casa.disi.unitn.it/~moschitt/since2013/2015_SIGIR_Severyn_LearningRankShort.pdf)
论文3:本文利用Tree-LSTMs方法得到了文本的语义相关和语义分类的最新成果。(https://nlp.stanford.edu/pubs/tai-socher-manning-acl2015.pdf)
语言识别
什么是语言识别?语言识别指的是将不同语言的文本区分出来。其利用语言的统计和语法属性来执行此任务。语言识别也可以被认为是文本分类的特殊情况。
博文:在这篇由fastText撰写的博文中介绍了一种新的工具,其可以在1MB的内存使用情况下识别170种语言。(https://fasttext.cc/blog/2017/10/02/blog-post.html)
论文1:本文讨论了285种语言的7种语言识别方法。(http://ep.liu.se/ecp/131/021/ecp17131021.pdf)
论文2:本文描述了如何使用深度神经网络来实现自动语言识别的最新成果。(https://repositorio.uam.es/bitstream/handle/10486/666848/automatic_lopez-moreno_ICASSP_2014_ps.pdf?sequence=1)
10. 文本摘要
什么是文本摘要?文本摘要是通过识别文本的重点并使用这些要点创建摘要来缩短文本的过程。文本摘要的目的是在不改变文本含义的前提下最大限度地缩短文本。
论文1:本文描述了基于神经注意模型的抽象语句梗概方法。(https://arxiv.org/pdf/1509.00685.pdf)
论文2:本文描述了使用序列到序列的RNN在文本摘要中达到的最新结果。(https://arxiv.org/pdf/1602.06023.pdf)
资料库:Google Brain团队的这个资料库拥有使用为文本摘要定制的序列到序列模型的代码。该模型在Gigaword数据集上进行训练。(https://github/tensorflow/models/tree/master/research/textsum)
应用程序:Reddit的autotldr机器人使用文本摘要来梗概从文章到帖子的各种评论。这个功能在Reddit用户中非常有名。(https://reddit/r/autotldr/comments/31b9fm/faq_autotldr_bot/)
程序实现:以下是如何用gensim包快速实现文本摘要。
fromgensim.summarization import summarizesentence="Automatic summarization is the process of shortening a text document with software, in order to create a summary with the major points of the original document. Technologies that can make a coherent summary take into account variables such as length, writing style and syntax.Automatic data summarization is part of machine learning and data mining. The main idea of summarization is to find a subset of data which contains the information of the entire set. Such techniques are widely used in industry today. Search engines are an example; others include summarization of documents, image collections and videos. Document summarization tries to create a representative summary or abstract of the entire document, by finding the most informative sentences, while in image summarization the system finds the most representative and important (i.e. salient) images. For surveillance videos, one might want to extract the important events from the uneventful context.There are two general approaches to automatic summarization: extraction and abstraction. Extractive methods work by selecting a subset of existing words, phrases, or sentences in the original text to form the summary. In contrast, abstractive methods build an internal semantic representation and then use natural language generation techniques to create a summary that is closer to what a human might express. Such a summary might include verbal innovations. Research to date has focused primarily on extractive methods, which are appropriate for image collection summarization and video summarization."summarize(sentence)
结束语
以上就是最常见的NLP任务的入门介绍和资料汇总了,如果你有更多优质的资源,也欢迎在评论区分享哦!
- ?
如何提升自己的学习能力?
Tina
展开
001
人与人之间的差距往往体现在学习能力上面。同样是一年365天,一天24个小时,甚至同样是在一个环境里,同样的一群人,就是有的人发展的更好、进步的更快,我们应该多多思考这背后的原因。今天我想跟大家分享学习能力的三个阶段,可供各位参考。
002
第一个阶段:能学会有人手把手教授的技能
这个是最基本的学习能力了。从小时候父母教会自己走路、拿筷子,到以后老师手把手教我们知识、技能,无不是在这个阶段。
若我们在成年之后竟然还能获得别人“手把手教授”的机会,请一定要珍惜。什么叫“珍惜”?意思是,在这个过程中,一定要认真观察,认真思考,反复琢磨:这个技能的重点在哪里?做得好的人为什么能做得好?做不好的人为什么做不好?还有哪些地方可以改进?有哪些刻意练习是必不可少的?
003
第二个阶段:能学会书本上所教授的技能
在这个阶段中,我相信已经甩下一大批人了,因为我国人们的平均阅读时间要远远小于欧洲一些国家。回想自己每天有多少时间放在看书阅读上?真的是少之又少。
如果想通过书本,或教程来学习一项技能时,我们需要思考三个方面:一、我们会用多少心思去寻找、阅读大量的相关书籍和教程?二、我们有没有能力去甄别书籍和教程质量的好坏?三、我们有没有在实践中运用书籍和教程所传授的知识?
004
第三个阶段:能学会没有人能教授的技能
真正让一个人变得卓越,就是他必须走入这第三个阶段。我们不仅要学会没人能手把手教自己的东西,还要能学会连书本中都找不到的东西。老实说,进入这个阶段太难,但一旦进入,真的受益匪浅。
首先我们得有足够的意愿度去学会这项技能,然后在边学习中边实践,通过记录量化自己的刻意练习过程。最后再不断总结,不断整理,不断让那些新技能、新概念在自己的脑子里形成清晰的组织与关联。
005
以上是关于学习能力的三个阶段。我们在日常的学习、生活和工作中,一定能遇到很多需要学习的知识和技能。我们在学习的过程中,反观自身正处于那个阶段,以便于自己更好地进行这个学习的过程。
- ?
教程 | 如何用Python和机器学习炒股赚钱?
Dawn
展开
作者:Gatan Rickter
机器之心编译参与:熊猫
相信很多人都想过让人工智能来帮你赚钱,但到底该如何做呢?瑞士日内瓦的一位金融数据顾问 Gatan Rickter 近日发表文章介绍了他利用 Python 和机器学习来帮助炒股的经验,其最终成果的收益率跑赢了长期处于牛市的标准普尔 500 指数。虽然这篇文章并没有将他的方法完全彻底公开,但已公开的内容或许能给我们带来如何用人工智能炒股的启迪。机器之心对本文进行了编译介绍,代码详情请访问原文。
我终于跑赢了标准普尔 500 指数 10 个百分点!听起来可能不是很多,但是当我们处理的是大量流动性很高的资本时,对冲基金的利润就相当可观。更激进的做法还能得到更高的回报。
这一切都始于我阅读了 Gur Huberman 的一篇题为《Contagious Speculation and a Cure for Cancer: A Non-Event that Made Stock Prices Soar》的论文。该研究描述了一件发生在 1998 年的涉及到一家上市公司 EntreMed(当时股票代码是 ENMD)的事件:
「星期天《纽约时报》上发表的一篇关于癌症治疗新药开发潜力的文章导致 EntreMed 的股价从周五收盘时的 12.063 飙升至 85,在周一收盘时接近 52。在接下来的三周,它的收盘价都在 30 以上。这股投资热情也让其它生物科技股得到了溢价。但是,这个癌症研究方面的可能突破在至少五个月前就已经被 Nature 期刊和各种流行的报纸报道过了,其中甚至包括《泰晤士报》!因此,仅仅是热情的公众关注就能引发股价的持续上涨,即便实际上并没有出现真正的新信息。」
在研究者给出的许多有见地的观察中,其中有一个总结很突出:
「(股价)运动可能会集中于有一些共同之处的股票上,但这些共同之处不一定要是经济基础。」
我就想,能不能基于通常所用的指标之外的其它指标来划分股票。我开始在数据库里面挖掘,几周之后我发现了一个,其包含了一个分数,描述了股票和元素周期表中的元素之间的「已知和隐藏关系」的强度。
我有计算基因组学的背景,这让我想起了基因和它们的细胞信号网络之间的关系是如何地不为人所知。但是,当我们分析数据时,我们又会开始看到我们之前可能无法预测的新关系和相关性。
选择出的涉及细胞可塑性、生长和分化的信号通路的基因的表达模式
和基因一样,股票也会受到一个巨型网络的影响,其中各个因素之间都有或强或弱的隐藏关系。其中一些影响和关系是可以预测的。
我的一个目标是创建长的和短的股票聚类,我称之为「篮子聚类(basket clusters)」,我可以将其用于对冲或单纯地从中获利。这需要使用一个无监督机器学习方法来创建股票的聚类,从而使这些聚类之间有或强或弱的关系。这些聚类将会翻倍作为我的公司可以交易的股票的「篮子(basket)」。
首先我下载了一个数据集:http://54.174.116.134/recommend/datasets/supercolumns-elements-08.html,这个数据集基于元素周期表中的元素和上市公司之间的关系。
然后我使用了 Python 和一些常用的机器学习工具——scikit-learn、numpy、pandas、matplotlib 和 seaborn,我开始了解我正在处理的数据集的分布形状。为此我参考了一个题为《Principal Component Analysis with KMeans visuals》的 Kaggle Kernel:https://kaggle/arthurtok/principal-component-analysis-with-kmeans-visuals
import numpy as np
import pandas as pd
from sklearn.decomposition
import PCA
from sklearn.cluster
import KMeans
import matplotlib.pyplot as plt
import seaborn as sb np.seterr(pide='ignore', invalid='ignore')
# Quick way to test just a few column features
# stocks = pd.read_csv('supercolumns-elements-nasdaq-nyse-otcbb-general-UPDATE-2017-03-01.csv', usecols=range(1,16))
stocks = pd.read_csv('supercolumns-elements-nasdaq-nyse-otcbb-general-UPDATE-2017-03-01.csv') print(stocks.head()) str_list = []
for colname, colvalue in stocks.iteritems():
if type(colvalue[1]) == str: str_list.append(colname)
# Get to the numeric columns by inversion
num_list = stocks.columns.difference(str_list) stocks_num = stocks[num_list] print(stocks_num.head())
输出:简单看看前面 5 行:
概念特征的皮尔逊相关性(Pearson Correlation)。在这里案例中,是指来自元素周期表的矿物和元素:
stocks_num = stocks_num.fillna(value=0, axis=1) X = stocks_num.values
from sklearn.preprocessing import StandardScaler X_std = StandardScaler().fit_transform(X) f, ax = plt.subplots(figsize=(12, 10)) plt.title('Pearson Correlation of Concept Features (Elements & Minerals)')
# Draw the heatmap using seaborn
sb.heatmap(stocks_num.astype(float).corr(),linewidths=0.25,vmax=1.0, square=True, cmap="YlGnBu", linecolor='black', annot=True) sb.plt.show()
输出:(这个可视化例子是在前 16 个样本上运行得到的)。看到元素周期表中的元素和上市公司关联起来真的很有意思。在某种程度时,我想使用这些数据基于公司与相关元素或材料的相关性来预测其可能做出的突破。
测量「已解释方差(Explained Variance)」和主成分分析(PCA)
已解释方差=总方差-残差方差(explained variance = total variance - residual variance)。应该值得关注的 PCA 投射组件的数量可以通过已解释方差度量(Explained Variance Measure)来引导。Sebastian Raschka 的关于 PCA 的文章对此进行了很好的描述,参阅:http://sebastianraschka/Articles/2015_pca_in_3_steps.html
# Calculating Eigenvectors and eigenvalues of Cov matirx
mean_vec = np.mean(X_std, axis=0) cov_mat = np.cov(X_std.T) eig_vals, eig_vecs = np.linalg.eig(cov_mat)
# Create a list of (eigenvalue, eigenvector) tuples
eig_pairs = [ (np.abs(eig_vals[i]),eig_vecs[:,i]) for i in range(len(eig_vals))]
# Sort from high to low
eig_pairs.sort(key = lambda x: x[0], reverse= True)
# Calculation of Explained Variance from the eigenvaluestot = sum(eig_vals) var_exp = [(i/tot)*100 for i in sorted(eig_vals, reverse=True)] cum_var_exp = np.cumsum(var_exp)
# Cumulative explained variance# Variances plot
max_cols = len(stocks.columns) - 1plt.figure(figsize=(10, 5)) plt.bar(range(max_cols), var_exp, alpha=0.3333, align='center', label='inpidual explained variance', color = 'g') plt.step(range(max_cols), cum_var_exp, where='mid',label='cumulative explained variance') plt.ylabel('Explained variance ratio') plt.xlabel('Principal components') plt.legend(loc='best') plt.show()
输出:
从这个图表中我们可以看到大量方差都来自于预测主成分的前 85%。这是个很高的数字,所以让我们从低端的开始,先只建模少数几个主成分。更多有关分析主成分合理数量的信息可参阅:http://setosa.io/ev/principal-component-analysis
使用 scikit-learn 的 PCA 模块,让我们设 n_components = 9。代码的第二行调用了 fit_transform 方法,其可以使用标准化的电影数据 X_std 来拟合 PCA 模型并在该数据集上应用降维(dimensionality reduction)。
pca = PCA(n_components=9) x_9d = pca.fit_transform(X_std) plt.figure(figsize = (9,7)) plt.scatter(x_9d[:,0],x_9d[:,1], c='goldenrod',alpha=0.5) plt.ylim(-10,30) plt.show()
输出:
这里我们甚至没有真正观察到聚类的些微轮廓,所以我们很可能应该继续调节 n_component 的值直到我们得到我们想要的结果。这就是数据科学与艺术(data science and art)中的「艺术」部分。
现在,我们来试试 K-均值,看看我们能不能在下一章节可视化任何明显的聚类。
K-均值聚类(K-Means Clustering)
我们将使用 PCA 投射数据来实现一个简单的 K-均值。
使用 scikit-learn 的 KMeans() 调用和 fit_predict 方法,我们可以计算聚类中心并为第一和第三个 PCA 投射预测聚类索引(以便了解我们是否可以观察到任何合适的聚类)。然后我们可以定义我们自己的配色方案并绘制散点图,代码如下所示:
# Set a 3 KMeans clustering
kmeans = KMeans(n_clusters=3)
# Compute cluster centers and predict cluster indices
X_clustered = kmeans.fit_predict(x_9d)# Define our own color map
LABEL_COLOR_MAP = {0 : 'r',1 : 'g',2 : 'b'} label_color = [LABEL_COLOR_MAP[l] for l in X_clustered]
# Plot the scatter digram
plt.figure(figsize = (7,7)) plt.scatter(x_9d[:,0],x_9d[:,2], c= label_color, alpha=0.5) plt.show()
输出:
这个 K-均值散点图看起来更有希望,好像我们简单的聚类模型假设就是正确的一样。我们可以通过这种颜色可视化方案观察到 3 个可区分开的聚类。
当然,聚类和可视化数据集的方法还有很多,参考:https://goo.gl/kGy3ra
使用 seaborn 方便的 pairplot 函数,我可以以成对的方式在数据框中自动绘制所有的特征。我们可以一个对一个地 pairplot 前面 3 个投射并可视化:
# Create a temp dataframe from our PCA projection data "x_9d"
df = pd.DataFrame(x_9d) df = df[[0,1,2]] df['X_cluster'] = X_clustered
# Call Seaborn's pairplot to visualize our KMeans clustering on the PCA projected data
sb.pairplot(df, hue='X_cluster', palette='Dark2', diag_kind='kde', size=1.85) sb.plt.show()
输出:
构建篮子聚类(Basket Clusters)
你应该自己决定如何微调你的聚类。这方面没有什么万灵药,具体的方法取决于你操作的环境。在这个案例中是由隐藏关系所定义的股票和金融市场。
一旦你的聚类使你满意了,你就可以设置分数阈值来控制特定的股票是否有资格进入一个聚类,然后你可以为一个给定的聚类提取股票,将它们作为篮子进行交易或使用这些篮子作为信号。你可以使用这种方法做的事情很大程度就看你自己的创造力以及你在使用深度学习变体来进行优化的水平,从而基于聚类或数据点的概念优化每个聚类的回报,比如 short interest 或 short float(公开市场中的可用股份)。
你可以注意到了这些聚类被用作篮子交易的方式一些有趣特征。有时候标准普尔和一般市场会存在差异。这可以提供本质上基于「信息套利(information arbitrage)」的套利机会。一些聚类则和谷歌搜索趋势相关。
看到聚类和材料及它们的供应链相关确实很有意思,正如这篇文章说的一样:https://fairphone/en/2017/05/04/zooming-in-10-materials-and-their-supply-chains/
我仅仅使用该数据集操作了 Cobalt(钴)、Copper(铜)、Gallium(镓)和 Graphene(石墨烯)这几个列标签,只是为了看我是否可能发现从事这一领域或受到这一领域的风险的上市公司之间是否有任何隐藏的联系。这些篮子和标准普尔的回报进行了比较。
通过使用历史价格数据(可直接在 Quantopian、Numerai、Quandl 或 Yahoo Finance 使用),然后你可以汇总价格数据来生成预计收益,其可使用 HighCharts 进行可视化:
我从该聚类中获得的回报超过了标准普尔相当一部分,这意味着你每年的收益可以比标准普尔还多 10%(标准普尔近一年来的涨幅为 16%)。我还见过更加激进的方法可以净挣超过 70%。现在我必须承认我还做了一些其它的事情,但因为我工作的本质,我必须将那些事情保持黑箱。但从我目前观察到的情况来看,至少围绕这种方法探索和包装新的量化模型可以证明是非常值得的,而其唯一的缺点是它是一种不同类型的信号,你可以将其输入其它系统的流程中。
生成卖空篮子聚类(short basket clusters)可能比生成买空篮子聚类(long basket clusters)更有利可图。这种方法值得再写一篇文章,最好是在下一个黑天鹅事件之前。
如果你使用机器学习,就可能在具有已知和隐藏关系的上市公司的寄生、共生和共情关系之上抢占先机,这是很有趣而且可以盈利的。最后,一个人的盈利能力似乎完全关乎他在生成这些类别的数据时想出特征标签(即概念(concept))的强大组合的能力。
我在这类模型上的下一次迭代应该会包含一个用于自动生成特征组合或独特列表的单独算法。也许会基于近乎实时的事件,这可能会影响那些具有只有配备了无监督学习算法的人类才能预测的隐藏关系的股票组。
原文链接:https://hackernoon/unsupervised-machine-learning-for-fun-profit-with-basket-clusters-17a1161e7aa1
- ?
贾扬清撰文详解Caffe2:从强大的新能力到入门上手教程
仇雨文
展开
选自 Nvidia Blog作者:Aaron Markham、贾扬清机器之心编译
昨天,Facebook 推出了 Caffe2,一个兼具表现力、速度和模块性的开源深度学习框架。它沿袭了大量的 Caffe 设计,可解决多年来在 Caffe 的使用和部署之中发现的瓶颈问题。最终,Caffe2 打开了算法实验和新产品的大门。通过在内部用于各种深度学习和增强现实任务,Caffe2 已经在 Facebook 对于规模和性能的需求上得到了锻造。同时,它为移动端应用提供了令人印象深刻的新功能,例如高级相机和即时通讯功能。英伟达作为 Caffe2 的开发合作者,计划对 Caffe2 的深度学习应用推出一系列博客文章。本文即是该系列博文的第一篇,将介绍 Caffe2 的深度学习基础知识,证明其灵活性和速度;本文还将介绍为什么你想要使用 Caffe2、是什么使 Caffe2 区别于 Caffe,最后还会通过一个预训练的目标分类模型给出一个 Caffe2 使用案例。
一次编码,任意运行
在保有扩展性和高性能的同时,Caffe2 也强调了便携性。「便携性」通常使人想起 overhead——它如何在诸多不同的平台上工作?overhead 如何影响扩展的能力?Caffe2 当然已把这些考虑在内,其从一开始就以性能、扩展、移动端部署作为主要设计目标。Caffe2 的核心 C++ 库能提供速度和便携性,而其 Python 和 C++ API 使你可以轻松地在 Linux、Windows、iOS、Android 甚至 Raspberry Pi 和 NVIDIA Tegra 上进行原型设计、训练和部署。也许你会问:物联网呢?Caffe2 将适用于大量设备。尽管你并不想在物联网设备上训练网络,但你可以在其上面部署训练好的模型。
当 GPU 可用时,Caffe2 也不会错失这个良机。在 Facebook 和英伟达的合作下,Caffe2 已经可以充分利用英伟达 GPU 深度学习平台。Caffe2 可使用最新的英伟达深度学习 SDK 库——cuDNN、cuBLAS 和 NCCL——来实现高性能、多 GPU 加速训练和推理。
绝大多数内置函数都可根据运行状态在 CPU 模式和 GPU 模式之间无缝切换。这意味着无需额外编程即可享用深度学习超级加速的便利。这引出了 Caffe2 激动人心的另一个方面:多 GPU 和多主机处理。Caffe2 使并行化网络训练变得简单,现在实验和扩展对你而言也非常简单。
最近的 ImageNet 训练基准使用了 64 块最新的英伟达 GPU 和 ResNet-50 神经网络架构。Facebook 工程师实现的 Caffe2 的 data_parallel_model(https://github/caffe2/caffe2/blob/master/caffe2/python/data_parallel_model.py)能够在 Facebook 的 8 个 Big Basin 人工智能服务器(每个服务器配有 8 个英伟达 Tesla P100 GPU 加速器,8 个服务器共有 64 块 GPU)上进行分布式神经网络训练。图 1 是这些系统的扩展结果:近乎直线的深度学习训练扩展,带有 57 倍的吞吐量加速。
图 1: 通过 Resnet-50 模型在多达 64 个英伟达 Tesla P100 GPU 加速器上训练的 Caffe2 扩展系数
Caffe2 的新功能
你也许记得在 Caffe 中一切都表征为一个「网」(Net),它由「层」组成,这些层是以神经网络中心化方式来定义计算。然而,这创建了一种非常刚性的计算模式,并带来了很多硬编码例程,尤其在深度神经网络训练方面。
Caffe2 采用了更现代的计算图(computation graph)来表征神经网络或者包括集群通信和数据压缩在内的其它计算。这一计算图采用「算子」(operator)的概念:在给定输入的适当数量和类型以及参数的情况下,每个算子都包含了计算输所必需的逻辑。尽管 Caffe 中的层总是采用张量(矩阵或多维数组),但 Caffe2 中的算子可采用并产生包含随意对象的「blob」,这一设计使得很多过去在 Caffe 中不可实现的事情成为可能:
CNN 分布式训练可由单个计算图表征,不管是在一个或多个 GPU 还是在多台机器上训练。这对 Facebook 规模的深度学习应用很关键。在专业硬件上轻松进行异构计算。例如,在 iOS 上,Caffe2 计算图可从 CPU 获取图像,将其转化为 Metal GPU 缓存对象,并将计算完全保留在 GPU 上,以获得最大吞吐量。更好地管理运行时间资源,比如使用 memonger 优化静态内存,或者预打包训练网络以获得最佳性能。float、float16、int8 混合精度和其他量化模型的计算。
Caffe2 有超过 400 个算子,具备广泛的功能。你可以浏览算子目录(http://caffe2.ai/docs/operators-catalogue.html)、查看稀疏操作(http://caffe2.ai/docs/sparse-operations.html)并学习如何编写自定义算子(http://caffe2.ai/docs/custom-operators.html)。
安装与设置
你要做的第一件事就是查看 Caffe2 的 GitHub 主页,clone 或 fork 该项目的 Github repo。
git clone https://github/caffe2/caffe2.git
如果你安装不了 Caffe2,你可以查看以下安装指南:http://caffe2.ai/docs/getting-started.html,尝试这个 Docker 镜像:https://hub.docker/r/caffe2ai/caffe2/,或者在你选择的云提供商上运行。其文档也为每个选项提供了指令。然而,我们建议你通过建立 GPU 支持的云实例,来验证 GPU 的处理速度。以下是使用 Docker 建立 GPU 支持的 Caffe2 的快速方式:
docker pull caffe2ai/caffe2 && docker run -it caffe2ai/caffe2:latest \python -m caffe2.python.operator_test.relu_op_test
尝试一个预训练的模型
现在让我们实际上手试一试!在这第一个教程中,我会教你如何轻松使用 Caffe2 的 Model Zoo 和模型下载器(model downloader),以帮你自己动手实验一些其它模型。Model Zoo 链接:http://caffe2.ai/docs/zoo.html
使用 Caffe2 的模型下载器
这是一个下载模块(https://github/caffe2/caffe2/blob/master/caffe2/python/models/download.py),你可以使用它来获取预训练好的网络。你可以将该模块整合到你的脚本中,或者在命令行中使用它:
python -m caffe2.python.models.download
比如,这行命令可以下载 squeezenet 预训练模型:
python -m caffe2.python.models.download squeezenet
下载了 squeezenet 之后,你可以加载它。这个模型下载器模块有一个安装(install)选项,你可以使用 -i 开启。否则你就需要在下载文件后自己移动它。一旦安装完成,你也可以直接将这些模型导入到你的 Python 脚本:
python -m caffe2.python.models.download -i squeezenet
运行一个预训练模型:目标分类
让我们试试用 Caffe2 做一次目标分类。如果你已经下载了一个预训练模型,这做起来就很简单。如果你还没有下载 squeezenet,你可以使用上述方法下载,也可从 S3 下载 init_net.pb 和 predict_net.pb 文件。
init_net.pb:https://s3.amazonaws/caffe2/models/squeezenet/init_net.pbpredict_net.pb:https://s3.amazonaws/caffe2/models/squeezenet/predict_net.pb
将下载好的文件放到 $PYTHONPATH/caffe2/python/models/squeezenet 文件夹。你的 Python 代码需要 Caffe2 的 workspace 来存放该模型的 protobuf 负载和权重,并将它们加载到 blob、init_net 和 predict_net 中。你将需要 workspace.Predictor 来接收这两个 protobuf,然后剩下的就交给 Caffe2 处理了。Caffe2 有一个简单的 run 函数,可以输入图像并进行分析,然后返回一个带有结果的张量。
# load up the caffe2 workspacefrom caffe2.python import workspace# choose your model here (use the downloader first)from caffe2.python.models import squeezenet as mynet# helper image processing functionsimport caffe2.python.tutorials.helpers as helpers# load the pre-trained modelinit_net = mynet.init_netpredict_net = mynet.predict_net# you must name it somethingpredict_net.name = "squeezenet_predict"workspace.RunNetOnce(init_net)workspace.CreateNet(predict_net)p = workspace.Predictor(init_net.SerializeToString(), predict_net.SerializeToString())# use whatever image you want (local files or urls)img =「https://upload.wikimedia.org/wikipedia/commons/thumb/7/7b/Orange-Whole-%26-Split.jpg/1200px-Orange-Whole-%26-Split.jpg」img = "https://upload.wikimedia.org/wikipedia/commons/a/ac/Pretzel.jpg"img = "https://cdn.pixabay/photo/2015/02/10/21/28/flower-631765_1280.jpg"# average mean to subtract from the imagemean = 128# the size of images that the model was trained withinput_size = 227# use the image helper to load the image and convert it to NCHWimg = helpers.loadToNCHW(img, mean, input_size)# submit the image to net and get a tensor of resultsresults = p.run([img])response = helpers.parseResults(results)# and lookup our result from the listprint response
该结果是一个概率的张量(一个多维数组)。本质上来看,每一行都表示了目标与神经网络所识别出的内容相匹配的几率。
注意,当该 workspace 的 Predictor 函数被调用来加载该预训练的模型时,下一步就是调用 .run 并给该函数传递一个图像数组。
p = workspace.Predictor(init_net, predict_net)results = p.run([img])
图像预处理
为了更快的处理速度和传统上的原因,图像在被送入 Caffe2 之前还需要经过两步转换:
1. 将颜色从 RGB 转换成 BGR
2. 将图像封装成像素数组,并提供批(batch)中图像的数量(在这案例中是 1)、通道(按 BGR 排列的像素)的数量、高度和宽度,它们分别被称为:NCHW for Number、Channels、Height 和 Width。
这些图像预处理函数由一个助手模块(helper module)进行处理,所以你可以仅关注特定于 Caffe2 的交互。要更深入地了解图像预处理,请参阅相关 IPython 笔记:https://github/caffe2/caffe2/blob/master/caffe2/python/tutorials/Image_Pre-Processing_Pipeline.ipynb
获得结果
当模型完成图像数组的处理时,你会获得一个多维数组,其形式为(1, 1, 1000, 1, 1)
results = np.asarray(results)print "results shape: ", results.shaperesults shape: (1, 1, 1000, 1, 1)
看到 results.shape 中的那个 1000 了吗?如果该批中不止一张图片,那么这个数组就会更大,但在中间仍然有 1000 个单元。其存放了该预训练模型中每个类别的概率。所以当你查看结果时,就好像是在说:「计算机,这是一个铍(Beryllium)球的概率是多少?」还是说这是一只毒蜥或其它 998 种该模型被训练用来识别的类别。
这是一个从 1000 长度的张量中提取出的前 3 个结果,已经过收缩和排序。这些结果按照匹配的概率进行了排序,0.98222 (98%) 是最高的。
[array([985.0, 0.9822268486022949], dtype=object), array([309.0, 0.011943698860704899], dtype=object), array([946.0, 0.004810151644051075], dtype=object)]
这是按照概率排列的前三个类别,说明了被检测的目标属于某个类别的概率。你可以使用这个 gist 来查看结果:https://gist.githubusercontent/aaronmarkham/cd3a6b6ac071eca6f7b4a6e40e6038aa/raw/9edb4038a37da6b5a44c3b5bc52e448ff09bfe5b/alexnet_codes。每次你运行这个示例时,你都会得到有轻微差别的结果。运行一张有一些雏菊的图片,该模型会得到:
除了最高概率的正确答案之外,第二和第三分别是蜜蜂和刺棘蓟,鉴于蜜蜂常常和花出现在同一张照片中,所以这样的结果也有点道理。
输入一张切开的橘子照片,可以得到:橘子(95.3%)、柠檬(4.6%)、草莓(0.006%)。
Caffe2 的合作与共享
Caffe2 发展的基石是对深度学习感兴趣并使用过 Caffe 以及其它开源机器学习工具的开发者、研究人员和公司组成的社区。通过在 Caffe2 上的开源以及在 Model Zoo 上的创新协作,我们希望能够推进人工智能科学的进步,并促进各个产业的收益。Caffe2 开源项目的成员能直接在列举所有模型的 Caffe2 Github Wiki 页面做贡献:https://github/caffe2/caffe2/wiki。
我们也邀请了开发者、研究人员以及任何对创造或精调模型感兴趣的人在 Caffe2 GitHub 的「issue」页面进行分享:https://github/caffe2/caffe2/issues,也可以要求把问题添加到 Zoo 中。此外,Github 的「issue」部分不只是面向 Caffe2 的开发者。如果你创建 Caffe2 模型、改进预训练模型,甚至只是使用预训练模型,你也能在该部分对此资源和 Model Zoo 进行输入、建议与贡献。关于 Caffe2 和 Model Zoo 合作(http://caffe2.ai/docs/zoo.html)的进一步信息请移步 http://caffe2.ai。
在 GTC 大会上学习 Caffe2
这部分包含了我们第一篇 Parallel Forall 博客。接下来的一篇博客中我们将会深解如何使用 Caffe2 训练 ImageNet,在文章内我们会展示一些有关分布式训练的激动人心的新基准、在优化 Caffe 2 训练上的小建议以及如何使用 Caffe2 的数据并行模型的细节。
此外 5 月 8 日 - 11 日在圣何塞市举办的 GTC 大会是每年一度的人工智能与 GPU 开发者大会,机器之心作为受邀媒体将会对此大会的精彩内容进行报道。
原文链接:https://devblogs.nvidia/parallelforall/caffe2-deep-learning-framework-facebook/
- ?
2017大数据、数据分析学习资料合集(含学习路线图)
杉林
展开
给大家整理一下本年度一些优质的文章,根据大数据相关的知识点一个个整理的,整理的内容包括知识点普及、学习书籍、学习路线图、学习笔记、学习资料、学习视频等等。
AI时代就业指南
未来已来:AI时代就业指南
AI时代就业指南:计算机、统计完全零基础,到底能不能学数据分析?
AI时代就业指南:数据科学人才成长之路
AI时代就业指南:Java 程序员如何转行做大数据?
AI时代就业指南:企业在招什么样的大数据工程师?
AI时代就业指南:女生适合做数据分析吗?
AI时代就业指南:数据挖掘工程师成长之路
AI时代就业指南:数学专业,你看不见的前尘似锦
AI时代就业指南:数据挖掘入门与指南
AI时代就业指南:普通程序员如何转向AI方向
AI时代就业指南:作为大数据从业人员,如何写好一份可堪入目的简历?
大数据
【入门】大数据行业如何入门-书籍、工具、案例(问题集锦)
【工具】2017 年你应该学习的编程语言、框架和工具
【资料】史上最全的“大数据”学习资源(上)
【资料】史上最全的“大数据”学习资源(下)
【路线图】大数据工程师学习路线图
【路线图】2017年最全的数据科学学习计划
【就业】2016年数据科学薪酬大盘点
【学习群】数据挖掘-机器学习
数据分析
【入门】数据分析那些事(数据分析师入门必看)
【职业】数据分析与数据挖掘类的职位必备技能
【职业】与大数据相关的工作职位有哪些?
【路线图】数据分析师学习路线图
【路线图】数据科学学习路线图
【书单】数据分析师的必读书单
【学习群】人人都是数据咖
统计学
【书单】统计学入门经典书单
【视频】大数据统计学基础
【学习群】大数据-统计分析
SQL
【文章】实用SQL语句大全
【笔记】SQL学习点滴合集
【视频】13次课了解sql2008的故事
Python
【教程】python快速教程
【文章】python爬虫实战
【文章】Python-pandas技巧系(量化小讲堂)
【路线图】python学习路线图
【路线图】Python大数据学习之路
【资料】python机器学习入门资料梳理
【视频】Python入门:数据分析与数据挖掘
【课程】Python进阶:数据挖掘实战
【学习群】Python数据挖掘-初级
【学习群】Python数据挖掘-高级
R
【文章】R语言知识体系
【文章】怎样学习R(上、下)
【文章】ggplot2绘图入门系列
【文章】R利剑NoSQL系列文章
【文章】R语言常用数据挖掘包
【路线图】R语言学习路线图
【视频】R学习免费学习视频
【课程】R语言入门
【课程】R语言实战
【课程】机器学习与R语言实践
【课程】R语言量化交易
【工具】全球最火的R工具包一网打尽,超过300+工具,还在等什么?
【学习群】R语言数据挖掘-初级
【学习群】R语言数据挖掘-中高级
Hadoop
【文章】Hadoop学习路线图
【文章】RHadoop实践系列文章
【教程】Spark入门实战系列教程
【课程】大数据实战工具Spark
【学习群】大数据-hadoop-spark
数据挖掘/机器学习
【入门】机器学习和数据挖掘推荐书单
【路线图】R语言学习路线图及R数据挖掘包
【路线图】Python数据分析和数据挖掘学习路线图
【路线图】机器学习路线图
【资料】近200篇机器学习&深度学习资料
【学习群】大数据-机器学习
因文本问题无法嵌入链接,请复制http://ppvke/Blog/archives/27665 至浏览器查看原文
- ?
教程 | 深度学习初学者必读:张量究竟是什么?
阮苑睐
展开
作者:Ted Dunning机器之心编译参与:晏奇、吴攀
今天很多现有的深度学习系统都是基于张量代数(tensor algebra)而设计的,但是张量代数不仅仅只能用于深度学习。本文对张量进行了详细的解读,能帮你在对张量的理解上更进一步。本文作者为 MapR Technologies 的首席应用架构师 Ted Dunning。
近段时间以来,张量与新的机器学习工具(如 TensorFlow)是非常热门的话题,在那些寻求应用和学习机器学习的人看来更是如此。但是,当你回溯历史,你会发现一些基础但强大的、有用且可行的方法,它们也利用了张量的能力,而且不是在深度学习的场景中。下面会给出具体解释。
如果说计算是有传统的,那么使用线性代数的数值计算就是其中最重要的一支。像 LINPACK 和 LAPACK 这样的包已经是非常老的了,但是在今天它们任然非常强大。其核心,线性代数由非常简单且常规的运算构成,它们涉及到在一维或二维数组(这里我们称其为向量或矩阵)上进行重复的乘法和加法运算。同时线性代数适用范围异常广泛,从计算机游戏中的图像渲染到核武器设计等许多不同的问题都可以被它解决或近似计算,
关键的线性代数运算:在计算机上使用的最基础的线性代数运算是两个向量的点积(dot product)。这种点积仅仅是两个向量中相关元素的乘积和。一个矩阵和一个向量的积可以被视为该矩阵和向量行(row)的点积,两个矩阵的乘积可以被视为一个矩阵和另一个矩阵的每一列(column)进行的矩阵-向量乘积的和。此外,再配上用一个值对所有元素进行逐一的加法和乘法,我们可以构造出所需要的线性代数运算机器。
计算机之所以可凭极快速度求出用线性代数编写的程序值,部分原因是线性代数具有规律性。此外,另一个原因是它们可以大量地被并行处理。完全就潜在性能而言,从早期的 Cray-1(译者注:Cary-1 是世界上最早的一台超级计算机,于 1975 年建造,运算速度每秒 1 亿次)到今天的 GPU 计算机,我们可以发现性能增长了超过 30000 倍。此外,当你要考虑用大量 GPU 处理集群数据时,其潜在的性能,在极小成本下,比曾经世上最快速的计算机大约高出一百万倍。
然而,历史的模式总是一致的,即要想充分利用新的处理器,我们就要让运算越来越抽象。Cray-1 和它向量化的后继者们需要其运行程序能够使用向量运算(如点积)才能发挥出硬件的全部性能。后来的机器要求要就矩阵-向量运算或矩阵-矩阵运算来将算法形式化,从而方可尽可能地发挥硬件的价值。
我们现在正站在这样一个结点上。不同的是我们没有任何超越矩阵-矩阵运算的办法,即:我们对线性代数的使用已达极限。
但是,我们没有必要把自己限制在线性代数上。事实证明,我们可以沿着数学这棵大树的枝叶往上再爬一段。长期以来,人们都知道在数学抽象的海洋中存在着比矩阵还要大的鱼,这其中一个候选就是张量(tensor)。张量是广义相对论重要的数学基础,此外它对于物理学的其它分支来说也具有基础性的地位。那么如同数学的矩阵和向量概念可被简化成我们在计算机中使用的数组一样,我们是否可以将张量也简化和表征成多维数组和一些相关的运算呢?很不幸,事情没有那么简单,这其中的主要原因是不存在一个显而易见且简单的(如在矩阵和向量上类似的)可在张量上进行的一系列运算。
然而,也有好消息。虽然我们不能对张量使用仅几个运算。但是我们可以在张量上写下一套运算的模式(pattern)。不过,这还不不够,因为根据这些模式编写的程序不能像它们写的那样被充分高效地执行。但我们还有另外的好消息:那些效率低下但是编写简单的程序可以被(基本上)自动转换成可非常高效执行的程序。
更赞的是,这种转换可以无需构建一门新编程语言就能实现。只需要一个简单的技巧就可以了,当我们在 TensorFlow 中写下如下代码时:
v1 = tf.constant(3.0)v2 = tf.constant(4.0)v3 = tf.add(node1, node2)
实际情况是,系统将建立一个像图 1 中显示的数据结构:
图 1:上方的代码被转译成一个可被重建的数据结构,而且它会被转成机器可执行的形式。将代码转译成用户可见的数据结构可让我们所编写的程序能被重写从而更高效地执行,或者它也可以计算出一个导数,从而使高级优化器可被使用。
该数据结构不会在上面我们展示的程序中实际执行。因此,TensorFlow 才有机会在我们实际运行它之前,将数据结构重写成更有效的代码。这也许会牵涉到我们想让计算机处理的小型或大型结构。它也可生成对我们使用的计算机 CPU、使用的集群、或任何手边可用的 GPU 设备实际可执行的代码。对它来说很赞的一点是,我们可以编写非常简单但可实现令人意想不到结果的程序。
然而,这只是开始。
做一些有用但不一样的事
TensorFlow 和像它一样的系统采用的完全是描述机器学习架构(如深度神经网络)的程序,然后调整那个架构的参数以最小化一些误差值。它们通过创建一个表征我们程序的数据结构,和一个表征相对于我们模型所有参数误差值梯度的数据结构来实现这一点。这个梯度函数的存在使得优化变得更加容易。
但是,虽然你可以使用 TensorFlow 或 Caffe 或任何其它基本上同样工作模式的架构来写程序,不过你写的程序不一定要去优化机器学习函数。如果你写的程序使用了由你选择的包(package)提供的张量标注,那它就可以优化所有类型的程序。自动微分和最先进的优化器以及对高效 GPU 代码的编译对你仍然有利。
举个简例,图二给出了一个家庭能耗的简单模型。
图 2:该图显示了一间房子的日常能耗情况(圆圈),横轴代表了温度(华氏度)。能耗的一个分段线性模型叠加在了能耗具体数据上。模型的参数按理来说会形成一个矩阵,但是当我们要处理上百万个模型时,我们便可以用到张量。
该图显示了一间房子的能耗使用情况,并对此进行了建模。得到一个模型不是什么难事,但是为了找出这个模型,笔者需要自己写代码来分别对数百万间房子的能耗情况进行建模才行。如果使用 TensorFlow,我们可以立即为所有这些房子建立模型,并且我们可以使用比之前得到这个模型更有效的优化器。于是,笔者就可以立即对数百万个房间的模型进行优化,而且其效率比之前我们原始的程序要高得多。理论上我们可以手动优化代码,并且可以有人工推导的导数函数。不过完成这项工作所需要的时间,以及更重要的,调试花费的时间会让笔者无法在有限时间里建立这个模型。
这个例子为我们展示了一个基于张量的计算系统如 TensorFlow(或 Caffe 或 Theano 或 MXNet 等等)是可以被用于和深度学习非常不同的优化问题的。
所以,情况可能是这样的,对你而言最好用的机器学习软件除了完成机器学习功能以外还可以做很多其它事情。
原文链接:http://kdnuggets/2017/06/deep-learning-demystifying-tensors.html
- ?
学python?不是一个python入门教程就行,学之前你必须知道这些
痴男
展开
第一 学习方向:python应用方向很多,必须明确学习方向想
全栈开发:就是web应用开发,是用来写网站后台的数据分析:就是做大数据分析的,数据量级起码是千万级别的,做的是大数据分析网络爬虫:其实属于数据分析的部分,就是获取数据源的方式。不管是阿拉伯数据还是说字符串,都是数据的一种。经常试试需要讲某些指标量化成数据据。机器学习:这也是python最有魅力的地方,善于做图形分析,算法建模等等。所以python在人工智能,机器学习的领域有着读到的优势。
三秋道果_python自学教程指南第二 学习目标:是自我提升还是转行就业,目的不一样选择的是有“巨大”区别的
转行就业为目的:那么建议学python全栈开发。既然是就业那么就要看市场,就是人才需求市场,这里说的市场当让是说python人才需求的市场了。说到市场当然python每个方向肯定有市场了,咱们直接看主要矛盾:一个是需求量,另一个是入行的难易程度。python全栈目前是市场的需求量最大,入行也是最容易的。要是为了就业那就先这样入门入行,就不用想了。看重前景方向:那么学python大数据分析或是python机器学习。其中大数据分析相对容易,python提供的是语言的环境,数据分析会有许多对应的工具包,会包含各种分析模型,随着经验积累会很熟练照到对应项目的分析模型。机器学习这块设计的算法,算法建模,图形分析等等需要的理论基础要很好,或者说起到决定性的作用,这里咱们要好好的想想。
三秋道果_python自学教程指南第三 学习建议:简单说几点
宗旨:我觉得跟游戏一样,万虐终成神!一定多敲代码,多解决bug,问题都解决过何愁不成道果。编程习惯:好的习惯也很重要,空格,缩进等等一些小细节,不仅是的代码更好看,也会让代码更具逻辑,更具可读性。多沟通:夺取和小伙伴多碰撞,想法火花猜会更多,也会学的更快。
第四 就是学习教程了,这里就送上pythonWeb开发,数据分析,爬虫,机器学习,都是全套的比较好的教程。
https://pan.baidu/s/1aoOdKrpPH5rBTBuceLI5Iw
01 Python大数据分析第一套02 Python全栈全栈第一套03 Python全栈全栈第二套04 Python全栈第三套05 Python全栈全栈第四套06 Python网络爬虫爬虫一套07 Python大数据分析大数据分析第二套08 Python机器深度学习人工智能第一套09 Python机器深度学习人工智能第二套
第五 python基础知识点梳理:python完整数据体系思维导图。
三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理三秋道果_python自学教程知识点梳理最后希望想学python的朋友们都能学好,感谢阅读。
转载请说明出处 —— 三秋道果著
量化学习教程
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
初入新手村 — 演示者视图的操作步骤 0102
-
初入新手村 — 鼠标的交互的方法 0103
-
初入新手村 — 如何快速访问工具栏 0104
-
初入新手村 — 文件选项卡、保存等基础 0105
-
第二关 :内容整理与处理 — 导航区操作技巧 0201
-
第三关 :文字工具与段落 — 如何给你的文字加特效 0301
-
文字工具与段落— 段落工具使用 0302
-
第四关:绘图与形状效果 — 基本形状的绘制方法 0401
-
绘图与形状效果 — 给你的图形加特效 0402
-
绘图与形状效果 — 快速排列多种图形 0403
-
第五关:合并形状与图标 — 用好合并形状轻松获得更多创意图形 0501
-
第六关:图片的神奇 — 教你PPT如何实现抠图 0601
-
图片的神奇 — 使用图片裁剪让图片为你所用 0602
-
第七关:表格与逻辑图表 — 教你画一个简洁大方的表格 0701
-
表格与逻辑图表 — SmartArt快速生成逻辑图表 0702
-
表格与逻辑图表 — 一招SmartArt走遍天下 0703
-
第八关:形象化市场数据 — PPT中数据图表怎么做?0801
-
形象化市场数据 — 教你做好看的条形图和柱状图 0802
-
形象化市场数据 — 饼图的美化技巧 0803
-
第十关:终成商务演示高手
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101
-
第一关 :初入新手村 — 工具选项卡操作演示 0101