Sunrise

`长路漫漫,唯剑作伴`


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

新闻分类:多分类问题

发表于 2020-02-20 | 分类于 深度学习

本文章参考《python深度学习》

新闻分类:多分类问题

新闻主题有多个类别,所 这是多分类(multiclass classification)问题的一个例子。因为每个数据点只能划分到一个类别, 所以更具体地说,这是单标签、多分类(single-label, multiclass classification)问题的一个例 子。如果每个数据点可以划分到多个类别(主题),那它就是一个多标签、多分类(multilabel, multiclass classification)问题。

这篇文章会构建一个网络,将路透社新闻划分为46个互斥的主题。

路透社数据集

它包含许多短新闻及其对应的主题,由路透社在1986 年发布。它是一个简单的、广泛使用的文本分类数据集。它包括46 个不同的主题:某些主题的样本更多, 但训练集中每个主题都有至少 10 个样本。 与 IMDB和MNIST 类似,路透社数据集也内置为Keras 的一部分。

1
2
3
4
5
6
from keras.datasets import reuters

(train_data, train_labels), (test_data, test_labels) = reuters.load_data(num_words=10000)

print(train_data[10])
[1, 245, 273, 207, 156, 53, 74, 160, 26, 14, 46, 296, 26, 39, 74, 2979, 3554, 14, 46, 4689, 4329, 86, 61, 3499, 4795, 14, 61, 451, 4329, 17, 12]

与IMDB评论一样,每个样本都是一个整数列表(表示单词索引),甚至将索引解码为新闻文本的方式都一样,只不过要使用reuters.get_word_index()。

我们有 8982 个训练样本和 2246 个测试样本。

阅读全文 »

电影评论分类:二分类问题

发表于 2020-02-10 | 分类于 深度学习

本文章参考《python深度学习》

电影评论分类:二分类问题

IMDB数据集

它包含来自互联网电影数据库(IMDB)的50 000 条严重两极分化的评论。数据集被分为用于训练的 25 000 条评论与用于测试的 25 000 条评论,训练集和测试 集都包含 50% 的正面评论和 50% 的负面评论。

IMDB 数据集内置于Keras库。它已经过预处理:评论(单词序列) 已经被转换为整数序列,其中每个整数代表字典中的某个单词。

1
2
3
from keras.datasets import imdb

(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=10000)

参数num_words=10000的意思是仅保留训练数据中前10 000 个最常出现的单词。低频单词将被舍弃,这样得到的向量数据不会太大,便于处理。

train_data 和 test_data 这两个变量都是评论组成的列表,每条评论又是单词索引组成 的列表(表示一系列单词)。train_labels 和 test_labels 都是0 和1组成的列表,其中0 代表负面(negative), 1 代表正面(positive)。

1
2
3
4
>>> train_data[0] 
[1, 14, 22, 16, ... 178, 32]
>>> train_labels[0]
1

举例子理解具体某条评论:

某条评论为:[15, 16, 89, 77],其中15代表字典中的I、16代表love、89代表this、77代表movie,那么这条评论为I love this moive。

阅读全文 »

深度学习概念

发表于 2020-01-20 | 分类于 深度学习

Python深度学习

注:本文章摘自《Python深度学习》书籍

第一部分:深度学习基础

第一章:什么是深度学习

人工智能、机器学习与深度学习的关系

符号主义人工智能(symbolic AI):

人们输入的是规则(即程序)和需要根据这些规则进行处理的数据,系统输出的是答案。

机器学习:

人们输入的是数据和从这些数据中预期得到的答案,系统输出的是 规则。这些规则随后可应用于新的数据,并使计算机自主生成答案。

机器学习的三要素

  1. 输入数据点
  2. 预期输出的示例
  3. 衡量算法结果好坏的方法

机器学习技术定义:在预先定义好的可能性空间中,利用反馈信号的指引来寻找输入数据的有用表示。

深度学习:它是从数据中学习表示的一种新方法,强调从连续的层中进行学习,这些层对应于越来越有意义的表示。“深度”指的并不是利用这种方法所获取的更深层次的理解,而是指一系列连续的表示层。

深度是指数据模型中包含的层数,这些分层表示几乎总是通过叫做神经网络(neural network)的模型学习得到。

注:这里所谓的神经网络与人类大脑神经等无关

阅读全文 »

反爬(五)

发表于 2020-01-13 | 分类于 爬虫

反爬五

这一次针对此网站的破解,这次的网站破解过程没有前两面的那么复杂(当然对大佬来讲前面几个也是小菜一碟),下面开始介绍这次的破解过程吧。

这里要说明的一点是一开始我也不知道这个网站有加密,直接构造参数做POST请求毫无问题,但是当持续爬取后出现请求被限制的相关问题,才逐渐开始发现问题并解决问题。

1、构造参数做post请求

post请求的具体参数如图中所示,其中比较重要的是queryCondition,其为一个列表类型,每个元素是一个json对象(Python字典对象),并且支持添加多个元素,对应处罚种类、年份等,包括种类、年份以及地区代码等如何设置其实有一个文件写的非常清楚,直接在下面的search框中,搜索诸如“21_s”之类的关键字,就能找到相应的文件,这里不再多说。

这里的ciphertext参数一开始看不出来什么线索,第一反应这可能是个固定的参数值,直接复制到代码中请求果然可以成功请求到数据,可是后来持续爬取了一会发现就爬不到数据了,调式发现请求返回“你的请求已被限制”此类的信息。后来想到可能这个参数有问题,去浏览器中复制了一个新的到程序中执行又可以正常跑,所以此时才明确这个参数不是固定的,会动态变化,所以要去从网站源码中找出其是如何生成的。

2、寻找关键参数ciphertext

阅读全文 »

Keras简单应用cifar10

发表于 2020-01-01 | 分类于 深度学习

安装

pip install keras

backend:后端引擎,import keras时会提示当前使用的是哪一个backend

注:backend现在有tensorflow、CNTK、Theano

使用以下语句可以改变当前脚本使用的backend

1
2
3
import os

>>> os.environ['KERAS_BACKEND']='theano'

注:Keras API 是Tensorflow的官方前端

Example:利用CNN实现cifar10小图片分类

1.先来简单了解几个问题

CNN(卷积神经网络)是什么?

从此明白了卷积神经网络

卷积层的使用

Conv2D:二维卷积层,即对图像的空域卷积。该层对二维输入进行滑动窗卷积,当使用该层作为第一层时,应提供input_shape参数。例如input_shape = (128,128,3)代表128*128的彩色RGB图像(data_format='channels_last')

model.add(Conv2D(32, (3, 3), padding='same', input_shape=(32, 32, 3)))

阅读全文 »

如何理解卷积神经网络(CNN)

发表于 2019-12-28 | 分类于 深度学习

注:本篇文章是转载的,以下为原文作者和相关信息

作者:Stack_empty
链接:https://www.jianshu.com/p/c0215d26d20a
来源:简书

一、引子————边界检测

我们来看一个最简单的例子:“边界检测(edge detection)”,假设我们有这样的一张图片,大小8×8:

图片中的数字代表该位置的像素值,我们知道,像素值越大,颜色越亮,所以为了示意,我们把右边小像素的地方画成深色。图的中间两个颜色的分界线就是我们要检测的边界。

怎么检测这个边界呢?我们可以设计这样的一个 滤波器(filter,也称为kernel),大小3×3:

然后,我们用这个filter,往我们的图片上“盖”,覆盖一块跟filter一样大的区域之后,对应元素相乘,然后求和。计算一个区域之后,就向其他区域挪动,接着计算,直到把原图片的每一个角落都覆盖到了为止。这个过程就是 “卷积”。(我们不用管卷积在数学上到底是指什么运算,我们只用知道在CNN中是怎么计算的。)这里的“挪动”,就涉及到一个步长了,假如我们的步长是1,那么覆盖了一个地方之后,就挪一格,容易知道,总共可以覆盖6×6个不同的区域。

阅读全文 »

Tensorflow学习

发表于 2019-12-25 | 分类于 深度学习

安装测试过程

建立虚拟环境:python -m venv 目录

启用虚拟环境:

linux下:source 目录/bin/activate;

windows下:cd Scripts–>activate.bat

安装tensorflow:pip install tensorflow

警告:Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2

忽略警告:

1
2
3
import os

os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

测试是否安装成功:

1
2
3
4
5
6
7
8
9
10
11
12
13
import tensorflow as tf
import os

os.environ['TF_CPP_MIN_LOG_LEVEL']='2'

a = tf.constant(1.)
b = tf.constant(2.)
print(a+b)

print('GPU:', tf.test.is_gpu_available())

tf.Tensor(3.0, shape=(), dtype=float32)
GPU: False
阅读全文 »

python 代码规范

发表于 2019-11-18 | 分类于 python编程

python代码规范–如何写出优雅、简洁并易于理解的代码

首部信息

首先在创建文件时,应该在文件首部声明一些必要信息,如开发者姓名、开发者联系方式以及该脚本的功能描述等,这样便于后续脚本的维护和审查。

若使用pycharm开发工具,可以在File-->settings-->Editor-->FIle and Code Templates中设置,这样每次新建文件时会自动生成某些基础信息。

基础信息模板:

1
2
3
4
5
6
7
# _*_ coding:utf-8 _*_
"""
@time :${DATE} ${TIME}
@author :liutengfei
@mail:liutengfei@bertadata.com
@desc:
"""

面向对象Class

  • 类名使用驼峰式命名方法,类名应与脚本文件名一致
  • 对于无须继承任何类(或者说继承于基类object)的类,使用classs ClassName:而非class ClassName(object):定义

  • 对于类变量或全局变量,使用全大写英文单词命名,多个单词间使用_连接,最多不超过3个

    ps: 类变量指的是定义在类中,但在各个类方法外的变量。类变量的特点是:所有类的实例化对象都可以共享类变量的值,即类变量可以在所有实例化对象中作为公用资源。 类变量推荐直接用类名访问,但也可以使用对象名访问。

  • 使用全小写英文单词命名实例变量或普通变量,如果需要多个单词的,单词之间使用_连接,单个变量使用单词的个数不超过3个

  • 私有变量/保护变量:_xxx单下划线开头叫保护变量,意思是只有类对象和子类对象自己能访问到这些变量,此变量不能通过from XXX import xxx 导入;__xxx 双下划线开头叫私有变量,只允许类本身访问,连子类对象也不能访问到这个数据

    ps:私有方法和保护方法的定义该规则同样适用

  • 使用self作为实例方法的第一个参数;使用cls作为类方法的第一个参数;当定义的方法在实现时并不需要引用类或者实例时,定义为静态方法,使用 装饰器@staticmethod 来定义

    ps:类方法较少使用,其具体使用场景有待总结

阅读全文 »

python 提取表格内容的通用方式

发表于 2019-10-21 | 分类于 python编程

提出问题

当我们写爬虫进行数据结构化时,经常遇到一些表格数据,无论是web表格还是Excel、Word or PDF中的表格,都很常见;如果表格非常规范化,我们在做结构化时可以说非常省事,一般认为某列对应我们的某字段值即可;但是,大多数时候,表格往往写的比较随意,某一字段值对应的数据并不是在固定的列。

举个例子,表格A对应的表头如下(这里用列表表示):

[“企业名称”, “处罚决定书文号”, “违法行为”, “处罚内容”, “处罚决定机关名称”, “处罚决定日期”]

相应的我们有一个python对象,其字段值为:

1
2
3
4
5
6
7
8
9
class PunishmentItem(object):
__slots__ = (
"name", # 行政相对人名称
"irregularities", # 违规行为
"punishment_text", # 处罚内容
"department", # 处罚决定机关名称
'public_date', # 时间
'number', # 文号
)

于是我们在提取的时候,理想的方式是name对应表格第一列,number对应第二列,依此类推……

但是实际上可能还有表格B,其对应的表头为:

[“处罚决定书文号”, “企业名称”, “违法行为”, “处罚内容”, “处罚决定机关名称”, “处罚决定日期”]

我们发现其文书号和企业名称顺序是反的,那我们可能会想在程序中加个判断如果是B表格我们就调整索引值…

可是,事实上可能还存在表格C、D、E……,其表头顺序各不相同,我们要在程序中写无数个if else吗,显然是不可以的。

阅读全文 »

某次清洗项目笔记

发表于 2019-10-16 | 分类于 数据库

mysql常用命令与查询语句

连接mysql:

mysql -u username -p -h 主机 -D db_name

断开连接:quit or Ctrl + C

所有命令末尾加上;或者\g

查看所有数据库:

show databases;

切换数据库:

use <数据库名>;

查看所有数据表:

show tables;

通配符:

%百分号通配符: 表示任何字符出现任意次数 (可以是0次).
_下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符.

获取表中行数:

select count(md5_id) from t_kaitinggonggaos;

查看表中字段数据类型:

show COLUMNS from table

获取庭审公开网的数据:

select * from t_kaitinggonggaos_0 where url like 'http://tingshen%';

获取前两行并以友好格式展示:

select * from t_kaitinggonggaos_0 where url like 'http://tingshen%' limit 0,2\G

查看索引:

show index from table

阅读全文 »
1…9101112
chenxi

chenxi

116 日志
11 分类
213 标签
Links
  • Docle
  • Swift
© 2025 chenxi
由 Hexo 强力驱动
|
主题 — NexT.Pisces v5.1.4