主成分分析(PCA)详解
¶前言
学习深度学习,教材是人民邮电出版的《DEEP LEARNING 深度学习》,讲的太细节了,数学符号完全不知道什么意思,非数学系的我看着头痛,只好翻翻博客,最后选择这篇进行学习: 主成分分析(PCA)原理详解
记录下学习过程…
¶PCA简介
¶介绍
深度学习的数据往往是多维度的,但不是每个维度都能对最后结果产生影响,试想有下面一组数据:
若假设各个科目成绩不会相互影响,我们很容易看出语文列的数据相同,也就是说即使我们去掉该列也不会影响最后的结果.那么数学、物理、化学这三门课的成绩构成了这组数据的主成分.
再看一组数据:
显然不容易找出其主成分.数据太多了,以至于看起来有些凌乱!也就是说,无法直接看出这组数据的主成分,因为在坐标系下这组数据分布的很散乱。究其原因,是因为无法拨开遮住肉眼的迷雾~如果把这些数据在相应的空间中表示出来,也许你就能换一个观察角度找出主成分。
而对于更高维度人脑无法想象的数据应该如何分析?
¶数据降维
假设我们有一个三维的数据,但其数据点均分布在三维立体空间的一个二维平面上,那么这组数据是否能够仅使用二维坐标表示?
答案是肯定的,而这个过程的本质是: ...
[Python]对于yield关键字的理解
¶前言
一直对python中的yield关建字的作用一知半解,很多博客根本是照着官网翻译的… 知道看到这篇文章 🔗python中yield的用法详解🔗 才理解了其涵义,特此记录.
¶正文
¶yield与return及生成器
首先, yield是一个 “return”, 其次带有yield的函数是一个迭代器;
如下代码:
123456789def foo(): print("starting...") while True: res = yield 4 print("res:",res)g = foo() #因为yield存在,函数并未真正执行,即未输出任何字符串print(next(g))print("*"*20)print(next(g))
运行结果:
12345starting...4********************res: None4
解释:
程序开始执行后,因为函数中存在yield关键字所以并不会真正执行,而是得到一个生成器g.
调用next方法,foo函数开始执行 ...
[树+dfs]Add and Search Word - Data structure design
¶题目
Design a data structure that supports the following two operations:
12void addWord(word) bool search(word)
search(word) can search a literal word or a regular expression string containing only letters a-z or .. A . means it can represent any one letter.
Example:
1234567addWord("bad")addWord("dad")addWord("mad")search("pad") -> falsesearch("bad") -> truesearch(".ad") -> truesearch("b..") -> true
Note:
You may ...
[转载]collections.defaultdict()的使用
¶正文
🔗原文链接:@yangsong95🔗
Python中通过Key访问字典,当Key不存在时,会引发‘KeyError’异常。为了避免这种情况的发生,可以使用collections类中的defaultdict()方法来为字典提供默认值。
语法格式:
collections.defaultdict([default_factory[, …]])
该函数返回一个类似字典的对象。defaultdict是Python内建字典类(dict)的一个子类,它重写了方法_missing_(key),增加了一个可写的实例变量default_factory,实例变量default_factory被missing()方法使用,如果该变量存在,则用以初始化构造器,如果没有,则为None。其它的功能和dict一样。
第一个参数为default_factory属性提供初始值,默认为None;其余参数包括关键字参数(keyword arguments)的用法,和dict构造器用法一样。
1、使用list作第一个参数,可以很容易将键-值对序列转换为列表字典。
1234567from collections i ...
JSU19-ACM搜索专题题解
¶前言
🔗Vjudge题集链接(组员可进)🔗
很多讲的不是很清楚或者没理解的建议拿着纸笔🖊照着代码演算一遍,这样对代码思想和算法原理的理解有很大帮助,然后一些
常用的模板(bfs,素数表)是要背下来的(理解了更好).
另,C++比C方便很多,而且C有的C++也有,C没有的C++也有,建议使用C++作为算法学习主要语言…
¶知识预备
🔗【中文wiki】深度优先搜索(需要特殊上网手段)🔗
🔗【算法入门】深度优先搜索(DFS)🔗
🔗算法图解之广度优先算法BFS🔗
🔗【算法入门】广度/宽度优先搜索(BFS)🔗
🔗谷歌访问助手,远离百度,从我做起🔗
¶正文
¶A:Dungeon Master (poj-2251)
题意:
三维迷宫,给定出口和入口,要求输出最短路径长度.
思路:
bfs求解,只需要在二维的基础上加一维(上下两个方向)即可.
知识点:
🔗 bfs 🔗
代码:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535 ...
android系统https抓包问题分析
¶前言
曾在Android系统抓包Bilibili客户端时遇到HTTPS验证问题,一直很不解,我不是安装了CA证书了吗?直到在52pojie看到@小木曾雪菜 的文章 [原创] 网络逆向(一) 油猴脚本与抓包初步 以显示b站楼层编号为例
才恍然大悟,b站客户端通过SSL pinning进行安全通信,原理大概是: 中间人通过伪造假的服务端证书来欺骗客户端,那么客户端就预置一份服务端证书来验证证书的真假.
之后机缘巧合下刚好在论坛的精华贴看到@psych1 的文章 [Android 原创] android系统https抓包问题分析
很好的解释了我遇到的问题,特此记录,侵删
¶HTTPS
http是超文本传输协议,其存在通信使用明文,内容极易被窃听;不验证通信方的身份,因此有可能遭遇伪装;无法证明报文的完整性,所以有可能遭到篡改的问题
于是HTTPS应运而生。https中的s是ssl或者tls,就是在原HTTP的基础上加上一层用于数据加密、解密、身份认证的安全层。
1HTTP + 加密 + 认证 + 完整性保护 = HTTPS
¶HTTPS的单双向验证
¶SSL pinning
S ...
编译原理课程笔记(弃坑)
¶词法分析
前面的课程没有笔记,在这里补一下哈,主要参考国防科技大学的编译原理MOOC
简单来说就是判断一个字符串是否是合法单词
正规式的等价性:
b(ab)*=(ba)*b
即:
¶确定的有限自动机(DFA)
M=(S,Σ,f,S?,F)
S:有穷状态集
Σ:输入字母表
f:状态转换函数,后继唯一
S?:S? ∈ S,是唯一的一个初态
F:F ∈ S,终态集(可以为空)
tips:
DFA每个顶点射出的弧上的标记符不同
DFA M所识别的字的全体为L(M)
¶非确定的有限自动机
M=(S,Σ,f,S?,F)
S:有穷状态集
Σ:输入字母表
f:状态转换函数,可以是字符,字,正规式
S?:S? ∈ S,非空初态集
F:F ∈ S,终态集(可以为空)
NFA与DFA区别:
DFA与NFA识别能力相同:
对于每一个NFA,有一个DFA与该NFA识别能力相同
¶NFA到DFA的转换(NFA的确定化)
如上图,NFA的确定化就是要消除这三个方面的差异
消除初始状态的差异
引进新的初态结点X和终态结点Y,X经过ε到S?(初始状态集)中任意结点,Y经过ε到F(终态集)中的 ...
双线部署你的个人博客
¶基于GitHub+Coding双线部署的Hexo静态博客搭建教程
¶前言
双线部署是为了实现国内访问走Coding,国外访问走GitHub以保证静态博客的访问速度,且Coding和GitHub服务器并不在国内大陆,避免了备案的麻烦。
感谢酷安@晴初_back大佬的搭建教程,本文旨在记录本人的博客搭建过程并指出原教程的一些错误以防止新手掉坑,原教程请参考: 外部链接
2022-04-05更新
修正Coding连接问题
¶准备:
GitHub账号
Git
Node.js
Coding账号
一个域名
¶GitHub仓库创建:
在GitHub创建仓库,仓库名应该为yourname.github.io,文章中的yourname均表示你的GitHub账号名
记得勾选xxx with a README
¶安装相关软件并连接GitHub:
¶安装Git
Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
Git下载
安装可以 ...