小猪学Paddle—线性回归之房价预测

上次我们进行了简单的环境安装和模型应用尝试,今天开始通过paddlepaddle的房价预测看一下简单的线性回归有监督模型是怎么训练出来的。

简单点说就是根据一份有标注的数据集,包含了某地区房屋的相关信息(feature)及该类房屋的标注平均价格(label),用来训练一个可以根据feature预测label的模型。具体数据字段一共14个,包含13个feature和1个label,含义如下:

属性名 解释 类型
CRIM 该镇的人均犯罪率 连续值
ZN 占地面积超过25,000平方呎的住宅用地比例 连续值
INDUS 非零售商业用地比例 连续值
CHAS 是否邻近 Charles River 离散值,1=邻近;0=不邻近
NOX 一氧化氮浓度 连续值
RM 每栋房屋的平均客房数 连续值
AGE 1940年之前建成的自用单位比例 连续值
DIS 到波士顿5个就业中心的加权距离 连续值
RAD 到径向公路的可达性指数 连续值
TAX 全值财产税率 连续值
PTRATIO 学生与教师的比例 连续值
1000(BK – 0.63)^2,其中BK为黑人占比 连续值
LSTAT 低收入人群占比 连续值
MEDV 同类房屋价格的中位数 连续值

数据示例:

整个训练过程大概分为读取数据集、定义网络结构/cost损失函数/训练参数/训练优化器、进行多轮模型迭代训练、选择训练误差最小的模型、应用模型。具体就不再赘述了,可以先阅读一下paddlepaddle的文档:http://www.paddlepaddle.org/docs/develop/book/01.fit_a_line/index.cn.html

下边是训练过程的代码和自己的理解注释,有错误欢迎指正:

vim housing_train.py #!/usr/bin/env python # -*- coding: utf-8 -*- import os import paddle.v2 as paddle import paddle.v2.dataset.uci_housing as uci_housing with_gpu = os.getenv('WITH_GPU', '0') != '0' def main(): # 0.init paddle初始化定义跑模型的设备 paddle.init(use_gpu=with_gpu, trainer_count=1) # 1.读取data数据

阅读全文

Jupyter Notebook 快速入门

Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。在本文中,我们将介绍 Jupyter notebook 的主要特性,以及为什么对于希望编写漂亮的交互式文档的人来说是一个强大工具。

在开始使用 notebook 之前,我们先需要安装该库。你可以在 Jupyter 官网上找到完整的步骤。

aliyun安装步骤

#0.install sudo pip install jupyter nbconvert matplotlib sudo yum install pandoc texlive tkinter tcl-devel tk-devel -y #1.get passwd sign ipython from notebook.auth import passwd; passwd() input password && get sha1 password Out[1]: 'sha1:f29ffxxxxxx:c5a57c13ee9a56618f83b3c53621xxxxxxxxxxxx' #2.conf jupyter notebook --generate-config mkdir

阅读全文

python使用esmre代替ahocorasick实现ac自动机[多模匹配]

为什么会用AC自动机? 如果你想知道一篇文章有没有你要过滤的敏感词,怎么办? 不可能用正则一个个的匹配吧?  敏感词超过300个之后,用Trie来构建模式树 (字典树)的速度优势相当的明显… …

特别说下,trie图也是一种DFA,可以由trie树为基础构造出来,对于插入的每个模式串,其插入过程中使用的最后一个节点都作为DFA的一个终止节点。

如果要求一个母串包含哪些模式串,以用母串作为DFA的输入,在DFA 上行走,走到终止节点,就意味着匹配了相应的模式串。

ps: AC自动机是Trie的一种实现,也就是说AC自动机是构造Trie图的DFA的一种方法。还有别的构造DFA的方法…

不扯淡了,我们后端都是python写的,python的ahocorasick模块跟我们的业务不太匹配,问题是这样的 !    如果你的服务是用来做敏感词匹配,也就是说所有文章里面只要含有一个关键词,那就说明匹配了。  但是我们的业务是文章中的所有能匹配到的关键词都一一的抽取出来。   我想有些朋友可能还不太明白,那么我举个例子, 如果我的关键词里面有宝马和马,那么用python的ahocorasick库只会得到宝马,而不会得到马。  问题是处在马这个字节是在宝马的链条里面的。  如何避开这个问题,我们也懒得自己重写了,已经有人给出了解决的模块。  已经测试完成,并上线使用了。

安装简单,直接pip install esmre

import esm
index = esm.Index()
index.enter("宝马")
index.enter("马")
index.enter("奔驰")
index.enter("保时捷")
index.fix()
index.query("哎呀,今天在楼下看到了宝马,我老家倒是有养马的,以前的邻居有个奔驰,不对是保时捷,大爷的,都是马")

再来一个完整的例子.  后续有时间我会把ac自动机的服务集成到rpc服务里面,然后用docker打包。

#coding:utf-8 import esm index = esm.Index() with open('keyword.config','r'

阅读全文

Python 的 WSGI 服务器 Gunicorn

Gunicorn 绿色独角兽 是一个Python WSGI UNIX的HTTP服务器。这是一个pre-fork worker的模型,从Ruby的独角兽(Unicorn )项目移植。该Gunicorn服务器大致与各种Web框架兼容,只需非常简单的执行,轻量级的资源消耗,以及相当迅速。

结构图:

uWSGI 的性能比较:

特点:

  • 本身支持WSGI、Django、Paster
  • 自动辅助进程管理
  • 简单的 Python配置
  • 允许配置多个工作环境
  • 各种服务器的可扩展钩子
  • 与 Python 2.x > = 2.5,3.x >= 3.2 兼容

安装:

$ pip install gunicorn $ cat myapp.py # -*- coding: utf-8 - from wsgiref.validate import validator from gunicorn import __version__ @validator   def app(environ, start_response):       if environ['REQUEST_METHOD'].upper() != 'POST': data = b'Hello, World!\n' else: data = environ['wsgi.input'].read()       start_response("200 OK", [           ("Content-Type", "text/plain"),           ("Content-Length", str(len(data)))       ])

阅读全文

python如何搭建http web服务器

使用python做了些很有趣的代码封装,希望能在php+nginx里调用,因为使用了第三方库的原因很难移植,除了用php执行python命令调用外,有什么更好的办法吗?

试了下,可以用python启一下webserver来实现http server的封装。下边实现一个用http接口访问python,执行简单的时间戳转日期,用来做示范。

#!/usr/bin/env python # -*- coding: utf-8 -*- """ File: python_server.py Desc: python服务测试 """ from BaseHTTPServer import BaseHTTPRequestHandler from BaseHTTPServer import HTTPServer import os import re import time import urllib #自定义处理程序,用于处理HTTP请求 class TestHTTPHandler(BaseHTTPRequestHandler): def

阅读全文

python发送post请求

python发送post请求代码示例:

import sys import httplib, urllib import traceback def post(params): '发送post请求' result = {'status':500, 'reason':'', 'response':'', 'headers':''} httpClient = None try: data = urllib.urlencode(params['data']) httpClient = httplib.HTTPConnection(params['hostname'], params['port'], timeout=30) if params.has_key('header'): httpClient.request("POST"

阅读全文

python的类属性与实例属性——继承与java或php的差异

写java、php写多了,以为python的类跟他们是一样的,结果今天遇到一个类属性的诡异现象,跟完发现在类属性上,python有个很特殊的地方,就是在子类调用父类的方法修改父类属性时,会影响到同进程的其它子类实例。例子如下:

class TestBase:  test={} def __init__(self, key):<br

阅读全文

python解析和打包protobuf

概述

Protocol Buffers,简称protobuf或pb,是Google公司开发的一种数据描述语言,类似于XML和JSON能够将结构化数据序列化用于数据存储、通信协议等方面。目前官方支持C++、JAVA、Python等三种编程语言。

与XML和JSON相比,protobuf在配置时将数据key映射为递增数字,使用二进制传输,并能够根据schema自动生成各语言的打包、解析回kv的代码,非常方便各语言数据互通,且有以下<span

阅读全文

使用python的包管理工具—pip

1 前言

pip 是一个Python包管理工具,主要是用于安装 PyPI 上的软件包,可以替代 easy_install 工具。

2 获取pip

2.1 编译pip

$ wget https://github.com/pypa/pip/archive/7.1.0.tar.gz
$ tar -zxvf pip-7.1.0.tar.gz && cd pip-7.1.0
$ python setup.py install
$ pip --version
$ pip install MySQL-python

2.2 使用包管理软件安装(推荐)

$ sudo yum install python-pip
$ sudo apt-get install python-pip

2.3 更新pip

$ pip install -U pip

3 pip基本使用

3.1 安装PyPI软件

$ pip install SomePackage
  [...]
  Successfully installed SomePackage

3.2 查看具体安装文件

$ pip show --files

阅读全文

python使用ConfigParser读写配置文件

Python 读取写入配置文件很方便,可使用内置的 configparser 模块,位置在 “python27/lib/configparser.py”,该模块支持读取类似ini/conf格式的配置文件。

基础读取函数

  • -read(filename)  直接读取文件内容
  • -sections()  得到所有的section,并以列表的形式返回
  • -options(section)  得到该section的所有option
  • -items(section)  得到该section的所有键值对
  • -get(section,option)  得到section中option的值,返回为string类型
  • -getint(section,option)  得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。

基础写入函数

  • -write(fp)  将config对象写入至某个 .init 格式的文件  Write an .ini-format representation of the configuration state.
  • -add_section(section)  添加一个新的section
  • -set( section, option, value)  对section中的option进行设置,需要调用write将内容写入配置文件 ConfigParser2
  • -remove_section(section)  删除某个 section
  • -remove_option(section, option)  删除某个 section 下的 option

代码示例

#config.ini文件
[main]
version = 20110921

[win]
pos = 0,0

#代码

>>>import ConfigParser # RawConfigParser 基本配置类 # ConfigParser 继承之RawConfigParser类,实现了智能特性<br

阅读全文

CentOs 6.x 升级 Python 版本

在CentOS 6.X 上安装 Python 2.7.X

CentOS 6.x 自带的python版本是 2.6 , 由于工作需要,很多时候需要2.7版本。所以需要进行版本升级。由于一些系统工具和服务是对 Python 有依赖的,所以升级 Python 版本需要注意。

升级步骤

如何欢乐的,没有痛苦的升级python版本 ,往下看 …

更新系统和开发工具集

更新指令

yum -y update
yum groupinstall -y 'development tools'

另外还需要安装 python 工具需要的额外软件包 SSL, bz2, zlib

yum install -y zlib-devel bzip2-devel openssl-devel xz-libs wget

源码安装Python 2.7.x

wget http://www.python.org/ftp/python/2.7.8/Python-2.7.8.tar.xz
xz -d Python-2.7.8.tar.xz
tar -xvf Python-2.7.8.tar

安装详情:

# 进入目录: cd Python-2.7.8

阅读全文