scipy笔记
scipy.optimize.minimize
求局部最小值
scipy.optimize.minimize(fun, x0, args=(), method=None, jac=None, hess=None, hessp=None, bounds=None, constraints=(), tol=None, callback=None, options=None)
解释:
fun: 求最小值的目标函数
x0:变量的初始猜测值,如果有多个变量,需要给每个变量一个初始猜测值。minimize是局部最优的解法,所以
args:常数值, fun中没有数字,都以变量的形式表示,对于常数项,需要在这里给值
method:求极值的方法,官方文档给了很多种。一般使用默认。
constraints:约束条件,针对fun中为参数的部分进行约束限制
计算 x1+2x2+1−3x1+4x3\frac{x_1+2}{x_2+1}-3x_1+4x_3x2+1x1+2−3x1+4x3 的最小值 x1,x2,x3x_1,x_2,x_3x1,x2,x3的范围都在0.1到0.9 之间
12345 ...
SAA
模拟退火算法
命名:
模拟退火算法来源于固体退火原理,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。
原理:
如上图所示,从A点开始下降,寻找最低点,若经过B点,由于B点的梯度为0,故在此点可能误将极值点作为最指点,退火算法正是为了解决这一问题。
算法中规定了有限次的循环上限,在每一次循环中,更新当前点的位置并获得下一次点的坐标,新旧两点坐标将满足以下一种关系:
若下一点的函数值Enew<EoldE_{new}<E_{old}Enew<Eold,即dE<0,则当前点比不是最值点,则更新点的几率 P=1.
若Enew>EoldE_{new}>E_{old}Enew>Eold,即dE>0,则可能当前点位于B点或C点,此时以一定几率P继续更新。
即P满足:
注意设定初始温度T在一较高值,设定结束温度,并且每次不要忘记更应温度t=t*r,r为降低率。
由该式可看出,随着T增大,P越来越小,最终达到平衡,也符合 ...
红黑树C++实现(转)
参考 https://www.cnblogs.com/xidian-mao/p/11014825.html
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418 ...
python
太久不用Python,记一下易错的点。
Python传参数时,兼具传值与传引用,当参数为可变数据类型,如列表时,传引用,可直接在函数内改变参数的值;当参数为不可变类型时,传值。
list+=与=+有差别,+=是在原列表上改动,因此=+地址会改变。
若要在函数内改动list,建议用+=。
narray与list类型不同,使用时注意转换。
列表[:-1]表示正向取到最后一个数,最后一个数不要;
[::-1]表示逆序取完所有数
ECNU自动查成绩+邮件提醒
项目地址 https://github.com/woriazzc/AutoGetGrade
AutoGetGrade
通过python访问ECNU公共数据库,自动化查成绩,或定时查成绩并在有新成绩时发送邮件通知。
安装依赖
python 3.6及以上。
需要依赖库:pillow,pytesseract,PyExecJS,lxml,requests,getpass,bs4
使用方法
在 user_login.py 中的 Login() 函数中填入 username 和 password。
在 send_gmail 中填入mail_host, mail_sender, mail_license, mail_receiver。
在 send_gmail 中的 send_gmail() 函数中的 mm[“From”]=“” 中填入 “your nickname”。
在cmd中移动到当前目录,运行 python main.py
扩展功能
如果有服务器的话,可以加个定时任务,定时执行main.py。
可增加功能
通过传参指定用户名,密码,邮箱。
部署到网页上,用户在网页端输入用 ...
摄像头人脸检测
分类器下载地址
detectMultiScale返回检测范围内检测到的目标的相对坐标!!
12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include <bits/stdc++.h> #include <opencv2/opencv.hpp> #include<opencv2/objdetect/objdetect.hpp>#include<opencv2/imgproc/imgproc.hpp>#include<opencv2/highgui/highgui.hpp>using namespace cv;using namespace std;Mat src;CascadeClassifier face_cascade, eye_cascade;void detect(Mat src) { namedWindow("win", WINDOW_AUTOSIZE); Mat ...
numpy康复笔记
获取数据
X[:,0]是numpy中数组的一种写法,表示对一个二维数组,取该二维数组第一维中的所有数据,第二维中取第0个数据,直观来说,X[:,0]就是取所有行的第0个数据, X[:,1] 就是取所有行的第1个数据。
data = np.loadtxt(‘linear_regression_data1.txt’, delimiter=‘,’)
从txt中载入数据,delimiter参数设置分隔符。
np.r_[a,b]是上下连接两个矩阵,如
123456789a = np.array([[1,2,3], [4,5,6]])b = np.arrya([[0,0,0], [1,1,1]])c = np.r_[a,b]c = [[1,2,3], [4,5,6], [0,0,0], [1,1,1]]
np.c_[a,b]是左右连接两个矩阵,如
1234567a = np.array([[1,2,3], [4,5,6]])b = np.arrya([[0,0,0], [1,1,1]])c = np.c_[a,b]c = [[1,2,3,0,0,0 ...
Locked
2022/7/29
不知道到底发生了什么,我究竟哪里做错了
明明一个月之前关系这么好 也许都是我在幻想
但这些事情难道都是对陌生人的恩惠吗?不可能 但现实就是这样
我输了
输得很惨
可怜自己吗 当然
我不知道怎么办了 生活被割开 心脏被取出来
突然的死亡之后还能有重生吗 什么时候呢
三年的关系就这么结束了是吗
没想到最后输的是我啊 还是太脆弱了
三年 那么多的美好
原来都是假的
都是虚幻的
为什么会这么结束?
我要怎么办
怎么办
为什么?那一步之遥原来只是我的幻想
那窗户纸原来是山的倒影
究竟发生了什么?
为什么??
为什么?!!!!!!!!
可我还在想他
怎么结束
真的结束了吗
真的!
三年的记忆里全都是他
明明只差最后一句话 可这都是我的幻想啊
都是假的
究竟是为什么
为什么啊
为什么被骗了这么久
为什么装的这么像
他们报仇了
我死了
这一切都像是假的
要怎么做才能接受
要怎么做才能结束
要怎么做才能
放下他
可怎么做
这么多美好 这么多亲密都是假的
真真假假
到底什么是真的
什么是假的
我只是玩具罢了
安慰
笑
都是假的
自然语言处理导论
文本处理
正则表达式
匹配单个字符
字符
功能
.
匹配任意一个字符(除了\n)
[]
匹配 [] 中列举的字符
\d
匹配数字,即 0-9
\D
匹配非数字
\s
匹配空白,即 空格、tab键
\S
匹配非空白
\w
匹配单词字符,即 a-z、A-Z、0-9、_
\W
匹配非单词字符
匹配多个字符
字符
功能
*
匹配前一个字符出现 0 次或无限次
+
匹配前一个字符出现 1 次或无限次
?
匹配前一个字符出现 0 次或 1 次
{m}
匹配前一个字符出现 m 次
{m,n}
匹配前一个字符出现 m 到 n 次
匹配开头或结尾
字符
功能
^
匹配字符串开头
$
匹配字符串结尾
| 匹配左右任一个表达式。yours|mine|his
[\text{^}] \text{^}在方括号内表示非后面的字符。[\text{^A-Z}]
pat = re.compile(pattern),创建模式对象pat,以后只要用 pat.match 等自己的方法。
match(pattern ...
牛客挑战赛51
https://ac.nowcoder.com/acm/contest/11191
D - NIT的字符串
题意:给定一个长度为 n 的字符串,求这个字符串在满足要求的长度为 m 的小写字符串中的期望出现次数。有 k 个要求,两种:要求第 x 个字符不为 c;要求第 x 个字符必须为 c。注意 aaa 中 aa 出现了 2 次。
KMP自动机+矩阵快速幂
先求出出现次数,除以方案数就是答案。
记给定的长度为 n 的字符串为 sss 串,未给定的长度为 m 的字符串为 ttt 串。
首先考虑暴力且无要求,dp[i][j]dp[i][j]dp[i][j] 表示满足 t[j−i+1,⋯ ,j]=s[1,⋯ ,i]t[j-i+1,\cdots,j]=s[1,\cdots,i]t[j−i+1,⋯,j]=s[1,⋯,i] 的 ttt 串个数。
通过 KMP自动机的 trans 数组求解,trans[i][c]trans[i][c]trans[i][c] 表示当前匹配到第 iii 位,再读入字符 c,最长能匹配到的长度。
则转移方程 dp[i+1][trans[i][s[i]]]+=dp[i][ ...