Python
文章平均质量分 54
嘿哈哈哈
人生就像一场演出,不到谢幕永远不知道自己有多精彩。
展开
-
Sphinx Docstring
【代码】Sphinx Docstring。原创 2023-09-02 13:39:59 · 396 阅读 · 0 评论 -
Python GIL
GIL 是在 Python 的 Cython 和 Pypy 解释器中实现的,使得同时只有一个 Python 线程在运行多线程无法加速 CPU 密集型任务,只能加速 IO 密集型任务原创 2023-09-02 13:38:37 · 56 阅读 · 0 评论 -
CPython,Pypy,Cython,Numba,Pybind
CPython:默认解释器,提供其他编程语言的外部函数接口Pypy:JIT编译器,支持C,CLI,JVM后端,旨在提高Python性能Cython:提供C扩展,避开GIL全局锁Numba:针对Numpy应用代码进行JIT优化Pybind:调用C/C++库原创 2023-09-02 13:38:05 · 127 阅读 · 0 评论 -
Difference between Apache parquet and Apache arrow
Parquet is a columnar file format for data serialization. Reading a Parquet file requires decompressing and decoding its contents into some kind of in-memory data structure. It is designed to be space/IO-efficient at the expense of CPU utilization for deco原创 2022-12-19 20:00:00 · 301 阅读 · 0 评论 -
读书笔记:《Python 和 Dask 数据科学》
相关性不意味着因果关系。原创 2022-11-21 18:30:00 · 552 阅读 · 0 评论 -
Optuna: better than grid search
Optuna。原创 2022-09-26 11:55:40 · 407 阅读 · 0 评论 -
Pytest Fixture
【代码】Pytest Fixture。原创 2022-09-26 11:54:56 · 238 阅读 · 0 评论 -
Efficient Numpy: Numba
【代码】Efficient Numpy: Numba。原创 2022-09-26 11:54:19 · 173 阅读 · 0 评论 -
Python DataFlow: Dask & Pyarrow & GreatExpectations
说到这里,大家大概都明白了arrow其实和protobuf很像,只不过protobuf是为了structured data提供内存表示方式和序列化方案。可是两者的使用场景却很不一样。protobuf主要是序列化structured data,有很多的键值对和非常深的nested structure。arrow序列化的对象主要还是表格状数据。arrow主要focus在帮助 data 序列化, 以便在各种system之间transfer.arrorw还解决了类型共享计算格式不统一的问题,是高性能计算的基础.原创 2022-09-26 11:53:36 · 714 阅读 · 0 评论 -
Python: Conda & Mamba
Conda作为使用最为广泛的数据科学环境管理工具,可以协助我们很方便的完成创建管理环境、下载安装第三方库、软件包等操作,但其在下载资源的过程中下载速度时常令人捉急,即使使用连接速度更快的国内镜像,也摆脱不了其单线程挨个下载资源导致的低效问题。原创 2022-09-26 11:52:01 · 904 阅读 · 0 评论 -
Python: tox
【代码】Python: tox。原创 2022-09-26 11:50:36 · 493 阅读 · 0 评论 -
Python versioneer
【代码】Python versioneer。原创 2022-09-26 11:48:38 · 930 阅读 · 0 评论 -
Python Packaging & Distribution
distuils is the standard packaging tool of Python, and setuptools is its improvement.shell commandExample: setuptoolssetup.pysetup.cfgjust copy parameters to cfg fileshell commandPyPI & egg, PIP & easy_installPyPI · The Python Packa原创 2022-09-25 20:47:43 · 253 阅读 · 0 评论 -
python不改变图片尺寸压缩到指定大小
python不改变图片尺寸压缩到指定大小import base64import ioimport osfrom PIL import Imagefrom PIL import ImageFile# 压缩图片文件def compress_image(outfile, mb=190, quality=85, k=0.9): """不改变图片尺寸压缩到指定大小 :param outfile: 压缩文件保存地址 :param mb: 压缩目标,KB :param step:原创 2022-05-06 14:02:02 · 1259 阅读 · 3 评论 -
机器学习比赛(ATEC)经验帖
文章目录@[TOC]数据分析基础分析缺失值分析详细分析数据处理特征和标签分离去除无效特征(只有单一值)处理缺失值(xgboost 无法处理缺失值,lightGBM 可以)去除离群点归一化和标准化数据集拆分特征工程模型选择(回归 or 分类)模型调优附录:Bert & 深度学习附录:黑技巧附录:资料存档附录:rank 代码数据分析基础分析import pandas as pdraw_data = pd.read_json(train_data_path,encoding='utf-8',lin原创 2021-11-08 18:36:24 · 1834 阅读 · 0 评论 -
大数据与机器学习 基础篇 遗传算法
遗传算法遗传算法(Genetic Algorithm)与其说是一个算法,不如说是一种处理问题的思想方式更为恰当,因为遗传算法整个体系都是在说对于一种问题处理的思路和原则,而不是一个具体的代码编写过程。注:本文中用到的Python及其模块安装教程参见算法过程遗传算法是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。关键步骤如下:基因编码。...原创 2018-04-22 23:21:48 · 3266 阅读 · 0 评论 -
OpenCV——使用分水岭算法进行图像分割
下面的示例代码主要有这几步:加载图像并转为灰度,设置一个阈值,将图像分为黑色部分和白色部分。通过morphologyEx()变换来去除噪声数据。使用dilate()函数得到大部分都是背景的区域。使用distanceTransform()函数的到最可能是前景的区域,并应用一个阈值来判断最可能为前景的区域。前景与背景区域相减得到边界区域。示例代码如下:...原创 2018-10-19 22:27:28 · 833 阅读 · 0 评论 -
OpenCV——根据Haar级联数据进行动态人脸检测
Haar级联由于灯光、视角、视距、摄像头抖动以及数字噪声的变化,一个图像的细节可能会变得不稳定。但是人们在分类时却不会受这些物理细节方面差异的影响。因此,提取出图像的细节对产生稳定分类结果和跟踪结果很有用。即:从图像中提取特征。虽然任意像素都可能影响多个特征,但特征应该比像素数少得多。由此两个图像的相似程度可以通过它们对应特征的欧氏距离来度量。类Haar特征是一种用于实现实时人脸跟踪的特征。每...原创 2018-10-22 19:36:25 · 672 阅读 · 0 评论 -
OpenCV——根据Haar级联数据进行静态人脸检测
Haar级联由于灯光、视角、视距、摄像头抖动以及数字噪声的变化,一个图像的细节可能会变得不稳定。但是人们在分类时却不会受这些物理细节方面差异的影响。因此,提取出图像的细节对产生稳定分类结果和跟踪结果很有用。即:从图像中提取特征。虽然任意像素都可能影响多个特征,但特征应该比像素数少得多。由此两个图像的相似程度可以通过它们对应特征的欧氏距离来度量。类Haar特征是一种用于实现实时人脸跟踪的特征。每...原创 2018-10-22 19:37:05 · 299 阅读 · 0 评论 -
OpenCV——使用普通摄像头进行深度估计
使用深度摄像头可以在捕获图像时估计图像与摄像头之间的距离。但是对于普通摄像头,可以使用属于立体视觉(stereo vision)几何学的极几何(Epipolar Geometry)从同一物体的两张不同图像上提取三维信息。下面是一个例子:# 从视差图得到图像深度import cv2import numpy as npfrom matplotlib import pyplot as plt...原创 2018-10-22 20:22:50 · 3482 阅读 · 3 评论 -
关于OpenCV算法未实现及其版权问题
错误示例如下:cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: error: (-213:The function/feature is not implemented) This algorithm is patented and i...原创 2018-10-22 20:26:24 · 7275 阅读 · 7 评论 -
使用 selenium 实现 python 爬虫
from selenium import webdriverimport timeimport re# GeckoDriver用于驱动Firefox,在这之前请确保已经正确安装好了Firefox浏览器并可以正常运行。# https://github.com/mozilla/geckodriver/releases# Max 下放到目录: /usr/local/binbrowser ...原创 2019-01-11 20:08:26 · 201 阅读 · 0 评论 -
TensorFlow 介绍及快速入门
TensorFLow 简介TensorFlow 是一个采用数据流图,用于数值计算的开源软件库。正如其名字所诉,TensorFlow 本质是一个由张量组成的数据流图。TensorFlow 在图中使用节点来表示数学操作,使用线来表示在节点之间相互联系的多维数据数组,即张量。除了表示施加的数学操作之外,节点还可以表示数据输入的起点或数据输出的终点,也可以表示读取或写入持久变量的终点;线则表示节点之间...原创 2019-03-27 20:49:24 · 930 阅读 · 0 评论 -
OpenCV——使用GrabCut算法进行物体分割
GrabCut算法的实现步骤为:在图片中定义含有(一个或多个)物体的矩形。矩形外的区域被自动认为是背景。对于用户定义的矩形区域,可用背景中的数据来区别它里面的前景和背景区域。用高斯混合模型(Gaussians Mixture Model,GMM)来对背景和前景建模,并将未定义的像素标记为可能的前景或背景。图像中的每一个像素都被看作通过虚拟边与周围像素相连接,而每条边都有一个属于前景或背...原创 2018-10-19 22:21:55 · 3024 阅读 · 0 评论 -
OpenCV——在窗口显示视频帧
OpenCV的namedWindow()、imshow()和DestoryWindow()函数允许指定窗口名来创建、显示和销毁窗口。此外,任意窗口下都可以通过waitKey()函数来获取键盘输入,通过setMouseCallback()函数来获取鼠标输入。以下代码可以实时显示摄像头帧:import cv2clicked = Falsedef on_mouse(event, x, y, ...原创 2018-09-29 22:19:19 · 2008 阅读 · 0 评论 -
OpenCV——在窗口显示图像
OpenCV的窗口函数和waitKey()函数相互依赖OpenCV窗口只有在调用waitKey()函数时才会更新,waitKey()函数只有在OpenCV窗口成为活动窗口时,才能捕获输入信息。源代码import cv2img = cv2.imread('000.jpg')cv2.imshow('000 jpg', img)cv2.waitKey()cv2.destroyAllWi...原创 2018-09-29 22:18:43 · 1590 阅读 · 0 评论 -
OpenCV——边缘检测
OpenCV提供了很多边缘检测滤波函数,包括Laplacian()、Sobel()以及Scharr()。这些滤波函数都会将非边缘区域转为黑色,将边缘区域转为白色或其他饱和颜色。例如:import cv2if __name__ == "__main__": img = cv2.imread("lena.jpg") cv2.Laplacian(img, cv2.CV_8U, i...原创 2018-10-05 12:50:43 · 3906 阅读 · 0 评论 -
OpenCV——高通/低通滤波器
高通滤波器(High Pass Filter,HPF)是检测图像的某个区域,然后根据像素与周围像素的亮度差值来提升(boost)该像素的亮度的滤波器。高通滤波器是根据像素与邻近像素的亮度差值来提升该像素的亮度。低通滤波器(Low Pass Filter,LPF)则是在像素与周围像素的亮度差值小于一个特定值时,平滑该像素的亮度。它主要用于去噪和模糊化,例如,高斯模糊是最常用的模糊滤波器(平滑滤波器...原创 2018-10-05 10:54:08 · 10771 阅读 · 0 评论 -
搜索引擎中的PageRank算法
PageRank算法PageRank算法总的来说就是预先给每个网页一个PR值(下面用PR值指代PageRank值),由于PR值物理意义上为一个网页被访问概率,所以一般是1N1N\frac{1}{N},其中N为网页总数。另外,一般情况下,所有网页的PR值的总和为1。如果不为1的话也不是不行,最后算出来的不同网页之间PR值的大小关系仍然是正确的,只是不能直接地反映概率了。所以PageRank算...原创 2018-06-09 14:35:08 · 3477 阅读 · 3 评论 -
我不信中心极限定理
背景在客观实际中有许多随机变量,它们是由大量的相互独立的随机因素的综合影响所形成的,而其中每一个别因素在总的影响中所起的作用都是微小的,这种随机变量往往近似地服从正态分布,这种现象就是中心极限定理。由李雅普诺夫(Lyapunov)定理表示成公式形式就是:设随机变量X1,X2,……,Xn,……X1,X2,……,Xn,……X_1,X_2, ……,X_n,……相互独立,它们具有数学期望和方差...原创 2018-06-13 19:34:27 · 1384 阅读 · 2 评论 -
Window下的Python,pip及常用模块安装教程
Python安装教程进入网站下载:点击打开链接(或自己输入网址https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载。下载后直接运行即可,注意以下两点:安装时选择Add Python to Path,这在cmd运行Python时用到。安装时选择安装pip,使用pip可以很方便的安装Python的大部分模块,将在下面进行...原创 2018-04-23 15:31:33 · 5758 阅读 · 0 评论 -
大数据与机器学习 基础篇 关联分析
关联规则是人类在认识客观事物中形成的一种认知模式。这种关联规则在人的认知里与反射类似。如在小时候不小心被针扎到,会有痛感,这样针刺和痛感就在大脑里有了这种关联。这就是人在认识事物的过程中在认知中所建立的关联规则,即通过与客观事件互动发现事物之间存在的依赖或因果关系。注:本文中用到的Python及其模块安装教程参见关联分析这里的关联分析就是尝试在数据中发现依赖或者因果关系的方法。这其...原创 2018-04-22 23:21:37 · 3987 阅读 · 0 评论 -
大数据与机器学习 基础篇 分类 支持向量机SVM
分类算法是机器学习中的一个重点,也是人们常说的“有监督的学习”。这是一种利用一系列已知类别的样本来对模型进行训练调整分类器的参数,使其达到所要求性能的过程,也成为监督训练或有教师学习。注:本文中用到的Python及其模块安装教程参见支持向量机SVM支持向量机SVM是一种比较抽象的算法概念,全称是Support Vector Machine,它可以用来做模式识别,分类或者回归的机...原创 2018-04-18 20:13:12 · 1991 阅读 · 0 评论 -
大数据与机器学习 基础篇 分类 隐马尔可夫模型
分类算法是机器学习中的一个重点,也是人们常说的“有监督的学习”。这是一种利用一系列已知类别的样本来对模型进行训练调整分类器的参数,使其达到所要求性能的过程,也成为监督训练或有教师学习。注:本文中用到的Python及其模块安装教程参见隐马尔可夫模型隐马尔可夫模型(Hidden Markov Model,HMM)最初由L. E. Baum发表在20世纪70年代一系列的统计学论文中,随后...原创 2018-04-18 20:13:07 · 2500 阅读 · 0 评论 -
大数据与机器学习 基础篇 分类 决策树
分类算法是机器学习中的一个重点,也是人们常说的“有监督的学习”。这是一种利用一系列已知类别的样本来对模型进行训练调整分类器的参数,使其达到所要求性能的过程,也成为监督训练或有教师学习。注:本文中用到的Python及其模块安装教程参见决策树决策树是分类时第一种常用的方式,这种方式几乎可以无师自通。下面举一个例子: 假如某大龄女青年在相亲网站上进行海选,因为资源太多而自己精...原创 2018-04-18 20:13:00 · 1797 阅读 · 0 评论 -
大数据与机器学习 基础篇 分类 朴素贝叶斯
分类算法是机器学习中的一个重点,也是人们常说的“有监督的学习”。这是一种利用一系列已知类别的样本来对模型进行训练调整分类器的参数,使其达到所要求性能的过程,也成为监督训练或有教师学习。注:本文中用到的Python及其模块安装教程参见朴素贝叶斯贝叶斯决策理论是主观贝叶斯派归纳理论的重要组成部分。贝叶斯决策理论方法是统计模型决策中的一个基本方法,基本思想如下:已知类条件概率参...原创 2018-04-18 20:12:53 · 687 阅读 · 0 评论 -
OpenCV——卷积滤波器
卷积滤波器是基于核的滤波器,其实核是一组权重,它决定如何通过邻近像素点来计算新的像素点。核也称为卷积矩阵,它对一个区域的像素做调和或卷积运算。OpenCV提供了一个非常通用的filter2D()函数,它运用由用户指定的任意核或卷积矩阵。cv2.filter2D(src, -1, kernel, dst)第二个参数指定了目标图像每个通道的位深度(比如,位深度cv2.CV_8U表示每个通道为8...原创 2018-10-05 13:09:19 · 2930 阅读 · 0 评论 -
OpenCV——Canny边缘检测
Canny边缘检测算法有5个步骤:使用高斯滤波器对图像进行去噪。计算梯度。在边缘上使用非最大抑制(NMS),即检查每一个像素,看此像素是否是周围具有相同梯度方向中最大的。在检测到的边缘上使用双阈值去除假阳性,需要两个参数minVal和maxVal。图像灰度梯度高于maxVal被认为是真正的边界,低于minVal的被舍弃。分析所有边缘及其之间的连接,以保留真正的边缘并消...原创 2018-10-05 13:25:20 · 1103 阅读 · 2 评论 -
OpenCV——获得摄像头的帧流
VideoCapture类可以获得摄像头的帧流。对摄像头而言,需要传递摄像头的设备索引。下面的例子会捕获摄像头10秒的视频信息,并将其写入一个AVI文件中。但是当VideoCapture类所使用的终端不支持查询的这个属性时,会返回0。例如,get()。源代码import cv2cameraCapture = cv2.VideoCapture(0)fps = 30size = (in...原创 2018-09-29 22:18:01 · 1229 阅读 · 2 评论 -
OpenCV——读取视频文件
OpenCV提供了VideoCapture类和VideoWriter类来支持各种的视频文件。支持的格式类型会因系统的不同而变化,但应该都支持AVI格式。在到达视频文件末尾之前,VideoCapture类可通过read()函数来获取新的帧,每帧是一副基于BGR格式的图像。可将一副图像传递给VideoWriter类的write()函数,该函数会将这幅图像加到VideoWriter类所指向的文件中。...原创 2018-09-29 22:17:09 · 4011 阅读 · 0 评论