用ssh方式连接mysql数据库
用 ssh 方式连接 mysql 数据库
原理
SSH 连接数据库的原理是先用 ssh
连接数据库所在服务器,然后作为该服务器上的应用程序访问本地数据库。
Navicat
Python
安装工具
1$ pip install sshtunnel
建立连接
12345678import sshtunnelwith sshtunnel.SSHTunnelForwarder( ('192.168.1.216', 22), # ssh端口22 ssh_password='实际密码', ssh_username='实际用户名', remote_bind_address=('127.0.0.1', 3306)) as server: # mysql端口3306 ......
此时数据库服务地址被映射到本地端口:127.0.0.1:serve.local_port,数据库连接方法和之前一样,不同的是将
ip 设置成本机 ip:127.0.0.1,端 ...
论文阅读_时序模型TDTS
基本信息
论文题目:基于趋势特征表示的 shapelet 分类方法
(Shapelet classification method based on trend feature
representation)
论文地址:http://www.joca.cn/EN/Y2017/V37/I8/2343
原理
在 Shaplet 被提出后的几年里,出现了很多算法来提高 Shapelet
效率和扩展其应用范围,《Shapelet classification method based on trend
feature representation》简称 TDTS 提出了一种基于趋势的 top-K
shapelet。
其核心方法有三个:
对分段后的子序列进行基于趋势的符号化处理
符号化的原理请见 SAX
论文,简单地说,它实现了连续到离散的转化,用简单的值表征一个序列,包含趋势的符号化方法用二元组<K,u>表示序列,其中
K 是斜率,u 是该序列的终点值。
它使用滑动窗口计算窗口内的斜率,当斜率变化大于某一阀值时(趋势改变时),则产生一个分段点
u 并继续滑动.所有分段完成 ...
论文阅读_时序模型Shapelet
基本信息
论文题目:《Time Series Shapelets: A New Primitive for Data
Mining》
论文地址:https://readpaper.com/paper/2029438113
相关源码:https://github.com/johannfaouzi/pyts
原理
2009 年,Ye 和 Keogh 在 KDD 上发表论文,首次提出了时序数据中的
Shapelet 的概念。Shapelet
是最近邻算法的扩展,它提取最典型的特征子集作为判断依据。
例如:马鞭草和荨麻的叶片很相似,如果将它们的叶片边缘形状整体作为序列建模,则难以区分。
[[Pasted image 20211211160835.png]]
它们的重要差别是叶柄与叶片之间的角度,一个是直角,一个是钝角。因此,如果使用序列中的小片断(子序列)作为序列的表征,就很容易将二者区分开来。
[[Pasted image 20211211160313.png]]
优缺点
优点
具有可解释性
鲁棒性强
相对于最近邻算法速度快
缺点
算法相对简单,花费时间较长
一般用于二分类和聚类, ...
0_Obsidian_简介
Obsidian 简介
#笔记/obsidian
我的困惑
这几年写了不少笔记文章,分布在微博、CSDN、知乎、公众号、有道云笔记、飞书……
随着平台的更替改版,越发改不动了,具体的问题罗列如下:
不同平台文章格式不同
切换平台过程中文章和图片丢失
忘了写在哪里找不到了
重要的文章发多个平台,虽然格式可以复制粘贴,但也很耽误时间
有些笔记发现问题想更新,但因为发布过程太麻烦而搁浅
有些笔记太过琐碎,不适合对外发布
有些笔记有些不想公开
有些笔记在不断改进中
有些笔记无法归入树状图中的某一类,或可归入多类
很多平台不支持仅对自己笔记检索
如果只写给自己看也没什么动力
更深层次的问题是:笔记是给别人看的,还是自己看的?目标不一样,写法也不一样。一个比较新的概念是:"
打造自己 Second Brain & Digital Garden",然后朋友介绍了
Obsidian。
用了 Obsidian
之后,我觉得最舒服的地方是:不用再强迫自己非得记住什么了,只要能快速找到就可以了,也算是一种妥协吧。
作为记忆的扩展,它有以下优点:
随手记下想法、摘录
工作计划和记录
常用工具随手 ...
5_Obsidian_DataView
Obsidian DataView
插件的简单用法
#笔记/obsidian
使用 DrawView 三方插件可生成动态索引
列出当前笔记中的所有标签
1`= this.file.tags`
根据文件生成索引列表
将”目录名“文件夹(含子文件夹)下所有名字包含‘2021’的文件生成索引列表,并按时间排序。
12345\```dataviewlist from "目录名"where contains(file.name,"2021")sort file.ctime\```
根据标签生成索引列表
12list from #标签名
YML 格式
如需使用 dataview 进一步管理和显示笔记相关属性,需要在笔记开头用 YML
格式描述笔记相关属性作为元数据(Metadata),可将 YML
看作是简单的配置文件,笔记文件将开头位置六个横杠之间的内容识别为
YML,形如:
12345---题目: xxx作者: yyytags: \[]---
注意冒号后面的空格
按属性生成索引表
12345\```dataviewlist from "&quo ...
Python正则表达式
Python 的正则表达式
1 基本用法
1.1.1 匹配字符串的开头
1^很
1.1.2 匹配字符串的末尾
1蓝$
1.1.3
匹配除了换行符外的任意字符
指定 re.S(re.DOTALL) 时,可包括换行符
1.
1.1.4 匹配方括号中任意一个字符
1\[Pp\]`,`\[0-9\]
1.1.5: 匹配不在中括号中的字符
1234\[^...]可匹配除了a,b,c之外的字符[^abc]
1.1.6 : 匹配其前面的字符出现 0
次或多次,
12可匹配 helll,hehel*
1.1.7 匹配其前面的字符出现 1
次或多次,如
1234+可匹配 helll,hel,但无法匹配hehel+
1.1.8 匹配其前面的字符出现 0
次或 1 次,
1234?可匹配hel,he,但无法匹配hellhel?
1.1.9 匹配其前面的表达式出现 n
次,
1234{n}可匹配food,但无法匹配powo{2}
1.1.10 匹配其前面的表达式出现 n
次以上,
1234{n,}可匹配food,fooooood,无法匹配pow,`o ...
Python实现PDF内容抽取
1 Python 的 PDF 工具
PyMuPDF: 支持更多高级功能和处理复杂 PDF 文件
pdfplumber:从 PDF 中提取文本、表格或生成简单的 PDF 文档
联合使用两个库是一种常用方法
2 PyMuPDF
最近需要把扫描的 PDF 转换成文本,试用了 pdfminer,pypdf2
等工具,解析图片的效果都不太好,用起来也比较麻烦,后来试用了
PyMuPDF,相对其它工具,它最新版本屏蔽了更多细节,围绕 Page
进行操作,调用非常方便。除了 PDF 它还支持解析 epub 等电子书格式。
目前网上例程大多是只抽取图片,没有同时转换图片和文字,且因为旧版本
API,大多已无法正常运行。本文将示例其用法。
3 安装
1$ pip install pymupdf==1.18.19
如果提取找不到 fiz.h,建议更新 pip 版本
1$ pip3.6 install --upgrade pip
4 例程
123456789101112131415161718192021222324252627282930313233343536373839404142def pars ...
配置BERT运行环境
配置 BERT 运行环境
自然语言处理库 Transformers 包含了
BERT、GPT、GPT-2、Transformer-XL、XLNet、XLM 等模型的实现,近两年
Pytorch 生态日趋成熟。因此,本文中使用 Transformers 的 Pytorch
支持来调用 BERT 模型。
检查 cuda 版本
深度学习模型如果没有 GPU
加持,训练速度几乎是无法忍受的,因此,在使用模型前请先确认 GPU
正常工作;另外,最新版本的 Transformers 需要 Pytorch 1.5.0
及以上版本,而 Pytorch 1.5.0 底层又依赖 CUDA 10.2 以上版本。
使用以下命令查看 CUDA 版本
1$ nvidia-smi
(查看右上角 CUDA Version: xx.x)
如果低于 10.2,可通过以下命令安装
1$ sudo apt-get install cuda-10-2
安装好后请重启系统
安装方法一:通用方法
由于安装依赖库可能干扰主机 Linux 系统中的 Python 环境,建议在 docker
中使用 Transformers 运行环境。 ...
语义相似度模型SBERT——一个挛生网络的优美范例
语义相似度模型
SBERT——一个挛生网络的优美范例
论文地址:https://arxiv.org/abs/1908.10084
论文中文翻译:https://www.cnblogs.com/gczr/p/12874409.html
源码下载:https://github.com/UKPLab/sentence-transformers
相关网站:https://www.sbert.net/
“论文中文翻译”已相当清楚,故本篇不再翻译,只简单介绍 SBERT
的原理,以及训练和使用中文相似度模型的方法和效果。
原理
挛生网络 Siamese network(后简称 SBERT),其中 Siamese
意为“连体人”,即两人共用部分器官。SBERT 模型的子网络都使用 BERT
模型,且两个 BERT 模型共享参数。当对比 A,B
两个句子相似度时,它们分别输入 BERT
网络,输出是两组表征句子的向量,然后计算二者的相似度;利用该原理还可以使用向量聚类,实现无监督学习任务。
挛生网络有很多应用,比如使用图片搜索时,输入照片将其转换成一组向量,和库中的其它图片对比,找到相似度最高(距离 ...
SHAP解释模型
1 简介
近年来,模型的可解释性越来越受到重视,SHAP 是一个 Python
工具包,它可以解析任何模型的输出。本文除了介绍 SHAP
的基本用法之外,还示例了新版本提供的一些高级用法,进一步提升了预测的归因效果以及分组分析。
2 环境配置:
以下实验使用当前最新版本 shap:0.39.0
1$ pip install shap
注意 xgboost 也需要使用对应的较新版本,如:
1$ pip install xgboost==0.82
为使用交互界面,notebook 环境下,加载用于可视化的 JS 代码
12import shapshap.initjs()
3 实验数据
12345678import shapshap.initjs()X,y = shap.datasets.boston()model = xgboost.train({"learning_rate": 0.01}, xgboost.DMatrix(X, label=y), 100)explainer = shap.TreeExplainer(model)shap_valu ...