def

python线程条件变量Condition(31)

試著忘記壹切 提交于 2021-02-12 13:54:17
对于线程与线程之间的交互我们在前面的文章已经介绍了 python 互斥锁Lock / python事件Event , 今天继续介绍一种线程交互方式 – 线程条件变量Condition. 一.线程条件变量Condition相关函数介绍 acquire() — 线程锁,注意线程条件变量Condition中的所有相关函数使用必须在acquire() /release() 内部操作; release() — 释放锁,注意线程条件变量Condition中的所有相关函数使用必须在acquire() /release() 内部操作; wait(timeout) — 线程挂起(阻塞状态),直到收到一个notify通知或者超时才会被唤醒继续运行(超时参数默认不设置,可选填,类型是浮点数,单位是秒)。wait()必须在已获得Lock前提下才能调用,否则会触发RuntimeError; notify(n=1) — 通知其他线程,那些挂起的线程接到这个通知之后会开始运行,缺省参数,默认是通知一个正等待通知的线程,最多则唤醒n个等待的线程。notify()必须在已获得Lock前提下才能调用,否则会触发RuntimeError,notify()不会主动释放Lock; notifyAll() — 如果wait状态线程比较多,notifyAll的作用就是通知所有线程; 二.线程条件变量Condition原理

DuReader数据集之数据预处理代码解析

我怕爱的太早我们不能终老 提交于 2021-02-12 12:54:52
https://zhuanlan.zhihu.com/p/75509030 上一篇我们介绍DuReader数据集的基本情况,见 刘聪NLP:机器阅读理解之DuReader数据集描述 。 这一篇我们介绍一下DuReader数据集是如何进行数据预处理的,我们要比较一下原始数据和预处理后数据的区别: 原始数据结构: { 'documents': [{ 'is_selected': True or Flase, 'title': ' String', 'paragraphs':[ ' String', ' String', ' String' ] }, { 'is_selected': True or Flase, 'title': ' String', 'paragraphs':[ ' String', ' String', ' String' ] } ], 'answers': [' String', ' String', ' String' ], 'question’: ‘String', 'question_type': DESCRIPTION or ENTITY or YESNO, 'fact_or_opinion': FACT or OPINION, 'question_id': 191572 } 预处理后的数据结构: { 'documents': [{ 'is

Python简单实现KNN算法

跟風遠走 提交于 2021-02-12 11:52:40
__author__ = '糖衣豆豆 ' from numpy import * from os import listdir import operator # 从列方向扩展 # tile(a,(size,1)) # 实现KNN算法,需要指定k,需要测试数据集,需要训练数据集,类别名(标签), def knn(k,testdata,traindata,labels): # 通过shape获得行数 traindatasize= traindata.shape[0] # 扩展testdata的维数,tile函数可以扩展testdata和traindata相同的行数,然后和traindata的向量相减计算测试机和训练集的差值 dif=tile(testdata,(traindatasize,1))- traindata # 计算差值的平方 sqdif=dif**2 # 计算平方和,每一行的各列求和,axis=1每一行的各列求和 sumsqdif=sqdif.sum(axis=1 ) # 开方 distance=sumsqdif**0.5 # 排序 sortdistance= distance.argsort() # 空字典 count= {} # 选择距离最短的k for i in range(0,k): # 获取类别,下标决定属于哪一类 vote= labels

kNN算法基本原理与Python代码实践

。_饼干妹妹 提交于 2021-02-12 11:29:34
 kNN是一种常见的监督学习方法。工作机制简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k各训练样本,然后基于这k个“邻居”的信息来进行预测,通常,在分类任务中可使用“投票法”,即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中可以使用“平均法”,即将这k个样本的实值输出标记的平均值作为预测结果;还可以基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。[1]      kNN的伪代码如下:[2]          对未知类别属性的数据集中的每个点依次执行以下操作:          (1)计算已知类别数据集中的点与当前点之间的距离;          (2)按照距离递增次序排序;          (3)选取与当前点距离最小的k个点;          (4)确定前k个点所在类别的出现频率;           (5)返回前k个点出现频率最高的类别作为当前点的预测分类。      以下通过图来进一步解释:   假定要对紫色的点进行分类,现有红绿蓝三个类别。此处以k为7举例,即找出到紫色距离最近的7个点。 分别找出到紫色距离最近的7个点后,我们将这七个点分别称为1、2、3、4、5、6、7号小球。其中红色的有1、3两个小球,绿色有2、4、5、6四个小球,蓝色有7这一个小球。 显然,绿色小球的个数最多,则紫色小球应当归为绿色小球一类。  

动态规划入门——动态规划与数据结构的结合,在树上做DP

我的未来我决定 提交于 2021-02-12 11:16:35
点击 上方蓝字 ,和我一起学技术 。 今天是 算法与数据结构的第15篇 ,也是动态规划系列的第4篇。 之前的几篇文章当中一直在聊背包问题,不知道大家有没有觉得有些腻味了。虽然经典的文章当中背包一共有九讲,但除了竞赛选手,我们能理解到 单调优化 就已经非常出色了。像是带有依赖的背包问题,和混合背包问题,有些剑走偏锋,所以这里不多做分享。如果大家感兴趣可以自行百度背包九讲查看,今天我们来看一个有趣的问题,通过这个有趣的问题,我们来了解一下在 树形结构 当中做动态规划的方法。 这个问题题意很简单,给定一棵树,并不一定是二叉树,树上的 树枝带有权重 ,可以看成是长度。要求树上最长的链路的长度是多少? 比如我们随手画一棵树,可能丑了点,勿怪: 如果让我们用肉眼来看,稍微尝试一下就能找到答案,最长的路径应该是下图当中红色的这条: 但是如果让我们用算法来算,应该怎么办呢? 这道题其实有一个非常巧妙的办法,我们先不讲,先来看看动态规划怎么解决这个问题。 树形DP 动态规划并不只是可以在数组当中运行,实际上只要满足动态规划的 状态转移的条件和无后效性 就可以使用动态规划,无论在什么数据结构当中。树上也是一样的,明白了这点之后,就只剩下了两个问题,第一个是状态是什么,第二个问题是状态之间怎么转移? 在之前的背包问题当中,状态就是背包当前用的体积,转移呢就是我们新拿一个物品的决策

Logistics Regression 逻辑回归及Python代码

徘徊边缘 提交于 2021-02-12 11:05:02
  逻辑回归(Logistics Regression)是广义线性模型中的一种,其取值为0或1,服从伯努利分布。而伯 努利家族的正则响应函数就是sigmoid函数 ,因此逻辑回归为什么选用sigmoid函数的理论原因。同时,sigmoid函数好处有:   1. 将现行分类器的响应值 <w , x> (内积) 映射到一个概率上;   2. 将实域上的数映射到P(y=1|w,x)上,满足逻辑回归的要求。   逻辑回归可以用于二分类问题,只能解决线性可分的情况,不能用于线性不可分。   对于输入向量X,其属于y=1的概率为:   $P(y=1|X,W)=h(X)=\frac{1}{1+{{e}^{-WX}}}$ 其属于y=0的概率为:   $P(y=0|X,W)=1-P(y=0|X,W)=1-h(X)=\frac{{{e}^{-WX}}}{1+{{e}^{-WX}}}$ 对于逻辑回归函数,其属于y的概率为:   $P(y|X,W)=h{{(X)}^{y}}\cdot {{(1-h(X))}^{1-y}}.$   逻辑回归模型需要求得参数向量W,可以使用极大似然估计求解。假设有 m 个样本,则似然函数为:   \[{{\text{L}}_{\text{W}}}=\prod\limits_{i=1}^{m}{\left[ h{{({{X}_{i}})}^{{{y}_{i}}}}\cdot {

python3 爬虫内涵段子

大憨熊 提交于 2021-02-12 07:40:16
import re from urllib import request class Sprder: def __init__(self): self.page=1 self.switch=True def loadPage(self): """" 下载页面 """ url="http://www.neihan8.com/article/list_5_"+str(self.page)+".html" user_agent = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT6.1; Trident / 5.0' headers = {'User-Agent': user_agent} request1=request.Request(url,headers=headers) response=request.urlopen(request1) html=response.read().decode("gbk") pattern=re.compile(r'<div\sclass="f18 mb20">(.*?)</div>', re.S) content_list=pattern.findall(html) self.dealPage(content_list) def dealPage(self,content_list): """

django contenttype

帅比萌擦擦* 提交于 2021-02-12 05:46:16
下图即为django的contenttype表 models.py 1 from django.db import models 2 from django.contrib.contenttypes.models import ContentType 3 from django.contrib.contenttypes.fields import GenericForeignKey,GenericRelation 4 5 6 class PythonBasic(models.Model): 7 course_name = models.CharField(max_length=32 ) 8 coupon = GenericRelation( " Coupon " ) # 反向查询 通过此字段,类似于 releted_name 9 class Oop(models.Model): 10 course_name = models.CharField(max_length=32 ) 11 coupon = GenericRelation( " Coupon " ) 12 class Coupon(models.Model): 13 coupon_name = models.CharField(max_length=32 ) 14 content_type = models

pytest 基本用法

佐手、 提交于 2021-02-12 04:51:39
1、断言用assert,可以进行==,!=,+,-,*,/,<=,>=,is True、False,is not True 、False ,in ,not in 等判断。 import pytest def add(a,b): return a + b def is_prime(n): if n <= 1: return False for i in range(2,n): if n % i == 0: return False return True def test_add_1(): '''测试相等''' assert add(3,4) == 7 def test_add_2(): '''测试不相等''' assert add(12,3) != 16 def test_add_3(): '''测试大于或等于''' assert add(17,22) <= 50 def test_add_4(): '''测试小于或等于''' assert add(17,22) >=38 def test_in(): '''测试包含''' a = 'hello' b = 'he' assert b in a def test_not_in(): '''测试不包含''' a = 'hello' b = 'hi' assert b not in a def test_true_1(): ''

Python爬虫学习教程:天猫商品数据爬虫

扶醉桌前 提交于 2021-02-12 04:01:09
天猫商品数据爬虫使用教程 下载chrome浏览器 查看chrome浏览器的版本号,下载对应版本号的chromedriver驱动 pip安装下列包 pip install selenium pip install pyquery 登录微博,并通过微博绑定淘宝账号密码 在main中填写chromedriver的绝对路径 在main中填写微博账号密码 1 # 改成你的chromedriver的完整路径地址 2 chromedriver_path = " /Users/bird/Desktop/chromedriver.exe " 3 # 改成你的微博账号 4 weibo_username = " 改成你的微博账号 " 5 # 改成你的微博密码 6 weibo_password = " 改成你的微博密码 " 效果演示图片 项目源码 1 # -*- coding: utf-8 -*- 2 3 from selenium import webdriver 4 from selenium.webdriver.common.by import By 5 from selenium.webdriver.support.ui import WebDriverWait 6 from selenium.webdriver.support import expected_conditions as EC 7