机器学习笔记——LDA线性判别分析
前言机器学习的东西真是又多又杂啊,之前刷吴恩达就见过主成分分析,即PCA(Principle Component Analysis),没见过线性判别分析,即LDA(Linear Discriminant Analysis)。才知道前者是对无标签数据作压缩的,而后者可以对有标签的二分类、多分类任务的数据作压缩。
本文主要讲述了LDA算法的推导,以及展示了LDA算法的代码实现和应用。
参考资料:
周志华《机器学习》,人称西瓜书
更详细的算法推导:机器学习算法推导&手写实现03——线性判别分析 - 知乎 (zhihu.com)
一、算法推导由前言可知,LDA相比于PCA,是用来处理有标签数据的,为了使压缩后的数据仍然能表示分类的情况,我们应该让同类的样本尽可能靠近,异类的样本尽可能远离。
数学表示为:给定数据集$ D = {x_i, y_i}_{i=1}^m $,该数据集共有$m$个样本,每个样本包含一个数据,即一个$n$维的向量$x_i$,以及一个标签,即一个数$y_i$,代表该数据点所在的类别。
当$y_i \in {0, 1}$,说明这是一个二分类任务,我们先从简单的二分类开始 ...
【SZU计算机网络实验】实现流式视频传输
前言一百年没有更新博客了,都怪开学一堆杂活(x
那就顺手把实验报告转到这边吧owo
本实验为SZU原创实验,实验开发团队的老师和助教们都很有耐心。。大赞,环境没配好去群里问是秒回的
相关资料:
实验文档:计算机网络课程综合实验平台 (snrc.site)
一、实验介绍该实验主要实现了一个服务端和一个客户端。其中,服务端利用缓冲区逐段向客户端发送多个视频片段,并在客户端逐段接收,并利用已经设计好的播放器,在网页中播放连续的视频。
二、实验过程0. 环境搭建实验文件中包含了压缩包exp1-lib.zip,exp-code.zip,cne.zip
将其解压,并把前两个压缩包(exp1-lib.zip和exp-code.zip)解压后的文件置于一个目录下,于cne.zip解压出来的文件夹devcpp6中的devcppPortable.exe中打开client.c和server.c文件,选择编译环境为Computer-networks
1. 单文件视频传输阅读代码发现实验文件中已经实现了:
1)服务端的初始化阶段,包括创建套接字,绑定套接字和监听套接字,以及接收客户端下载请求和发送文件大小给客 ...
【CMU 15-213 CSAPP】详解shell lab——编写自己的shell
前言视频已经刷完好几天了,lab才打完这个,不得不说shell lab也是设计的非常贴心,注意事项几乎都能在文档找到。
参考资料:
课程视频链接:2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频
实验文档:shlab.dvi (cmu.edu)
一、实验须知实验文件已经在main函数中为我们完成了命令行参数的读取、给信号绑定handler等主体部分,并且提供了一系列有用好用的函数,我们需要做的只有在tsh.c中完成以下函数:
eval: 解析每条命令行的类型并执行
builtin_cmd: 识别和处理四条内置命令: quit, fg, bg 和 jobs.
do_bgfg: 实现内置命令fg 和 bg
waitfg: 等待前台作业完成
sigchld_handler: 接收SIGCHLD信号
sigint_handler: 接收SIGINT(Ctrl + C)信号
sigtstp_handler: 接收SIGINT(Ctrl + Z)信号
实验文件还提供了参考的tshref,sdriver.pl以及许多tracexx.txt文件供我们对比检验自己的tsh是否 ...
【CMU 15-213 CSAPP】详解cachelab——模拟缓存、编写缓存友好代码
前言本文是15-213 CSAPP系列课程配套实验cachelab的题解,实验分为两个部分:一、编写缓存模拟器(cache simulator),模拟地址与缓存之间的映射关系二、编写缓存友好(cache-friendly)代码,从而优化矩阵转置
碎碎念:cachelab可以用c语言写,终于不用在gdb一行行看汇编了。
参考资料:
课程视频链接:2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频
实验文档:cachelab.dvi (cmu.edu)
getopt编译错误:编译错误 error: implicit declaration of function ‘getopt’ [-Werror=implicit-function-declaration] 解决方法-CSDN博客
PartB思路参考:CSAPP Cache Lab 缓存实验 - 简书 (jianshu.com)CSAPP - Cache Lab的更(最)优秀的解法 - 知乎 (zhihu.com)
Part A: 编写缓存模拟器1. 实验目标在csim.c中编写代码,后编译生成可执行文件,要求该 ...
【CMU 15-213 CSAPP】详解attacklab——用代码注入和ROP攻击程序
前言磕磕绊绊终于把attacklab打完了,有了bomblab的基础打这个真是好玩极了
参考资料:
课程视频链接:2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频
实验文档:attacklab.pdf (cmu.edu)
零、 实验须知1. hex2raw实验文件中有一个hex2raw,它接收一个文件,文件中是许多以空格分割的两位十六进制数,然后将每个数根据ASCII码转换为字符然后输出,使用方式如下:
已有test.txt如下:1230 31 32 33 34 35 36 37 3839 3a 3b 3c 3d 3e 3f 40 41
调用hex2raw:1root@Andrew:/mnt/d/.c/csapp/target1# ./hex2raw <test.txt >test_raw.txt
得到test_raw.txt如下:10123456789:;<=>?@A
2. code2bytehex2raw已经允许我们将十六进制数转化为字符,然后输入到程序中。现在我们想向程序中注入指令,就只需要得到指令对应的十六进制表示,然后丢到hex ...
【CMU 15-213 CSAPP】详解lab2——bomblab
前言又是一个刚上手差点放弃的lab,一边看视频一边看书一边找资料,初窥门径知道gdb怎么用和汇编怎么看后就开始自己拆弹了
参考资料:
gdb命令:Enscript Output (cmu.edu)
windows和linux读取换行符的转换问题:windows和linux下读取文件换行符的一个坑——\r\n和\n_linux unknown \r\n-CSDN博客
bomblab全攻略:【深入理解计算机系统 实验2 CSAPP】bomb lab 炸弹实验 CMU bomblab
实验过程0. 实验热身0.1 gdb命令先圈一下一些重要的命令:
123456789101112131415161718192021222324# gdb,启动!root@Andrew:/mnt/d/.c/csapp/bomb# gdb bomb# 打印栈信息(gdb) info stack# 打印寄存器的值(gdb) print $rax(gdb) p $rax(gdb) p /x $rip # 输出当前指令地址# 反汇编某个函数(gdb) disas funcName# 将输出信息保存到文件中(很好用,方便 ...
【CMU 15-213 CSAPP】详解lab1——datalab
前言终于开始学大名鼎鼎的CSAPP,一开始配环境就把我配得想退坑。。幸亏配好了
lab1真的很难想,实在想不出来就瞅眼别人的思路,然后又再嗯造自己的
所有注释都是作者一点一点想一点一点敲出来的喵
环境配置参考:CSAPP LAB —— 0. 实验环境搭建_何人听我楚狂声 csdn-CSDN博客
代码思路参考:CSAPP 之 DataLab详解,没有比这更详细的了 - 知乎 (zhihu.com)cSAPP lab1 datalab - 知乎 (zhihu.com)
完整代码1. bitXor123456789101112/* * bitXor - x^y using only ~ and & * Example: bitXor(4, 5) = 1 * Legal ops: ~ & * Max ops: 14 * Rating: 1 */int bitXor(int x, int y) { // 按位异或 即 (x & y) | (~x & ~y) // 由德摩根律 return (~(x & y)) & ...
CS145 Intro to databases 学习笔记5——递归查询、OLAP、NoSQL
前言好耶!终于刷完了。看到进阶课程CS245还挺有意思的,就是找不到公开课,啥时候再去啃啃pdf。
本文是作者学习standford CS145 Introduction to Databases系列视频的第五篇笔记辣,估计是最后一篇,主要包括了第十五章到第十七章的内容:
递归查询
OLAP
NoSQL
相关参考资料:
OLTP和OLAP的区别:OLAP和OLTP的区别是什么? - 知乎 (zhihu.com)
With Cude 和 With Rollup:Hive中with cube、with rollup、grouping sets用法 - 简书 (jianshu.com)
NoSQL数据库的代表:一文打尽,主流 NoSQL 及应用场景详解~ - 知乎 (zhihu.com)
一、递归查询1. 基本介绍1.1 WITH AS语句利用WITH AS语句为查询语句指定一个标识符,方便其他查询去调用1234With RI As (query_1) R2 As (query_2) Rn As (query_n)<query involving Rl, ... ...
CS145 Intro to databases 学习笔记4——索引、约束、触发器、事务、视图、授权
前言已经是学习standford CS145 Introduction to Databases系列视频的第四篇笔记,这篇几乎要把SQL中重要的概念都涵盖了。。。
本文主要包括第十章到第十四章的内容:
索引
约束和触发器
事务
视图
授权
相关参考资料:
视频链接:Introduction to Databases - Jennifer Widom - Stanford
黑马的视频也是很实用啊:黑马程序员 MySQL数据库入门到精通,从mysql安装到mysql高级、mysql优化全囊括
一、索引(Indexes)1. 基本介绍对关系表的某个或某些属性构建索引,能够提高查询的效率。
然而,维护索引也需要开销:
索引需要占用空间(最微不足道的开销,空间换时间咱还是愿意的)
创建索引需要时间(中等的开销,创建索引确实是耗时的操作)
索引需要维护,特别是在频繁对数据做修改时开销很大(几乎可以抵消索引带来的好处)
因此评价索引需要考虑到查询和修改的负荷(Query vs. Update)
2. 索引的结构索引可以有两种结构,分别是:
B树或B+树(B trees or B+ tr ...
CS145 Intro to databases 学习笔记3——关系型数据库设计、XML的查询、UML
前言晚上床上玩手机有点上头,导致一整天下午之前都没怎么精神刷课,于是调整了下学这套课程的排期,多排了一天嘻嘻,这下轻松多了。
本文是学习standford CS145 Introduction to Databases系列视频的第三篇笔记,主要包括第七章到第九章的内容:
关系型数据库设计
XML的查询
统一建模语言(Unified Modeling Language, or UML)
相关参考资料:
视频链接:Introduction to Databases - Jennifer Widom - Stanford
函数依赖、部分依赖、传递依赖等准备知识:范式通俗理解:1NF、2NF、3NF和BNCF-CSDN博客
关系模式的分解原则:【数据库原理】(18)关系模式的分解 - 知乎 (zhihu.com)
三范式和BCNF的举例:数据库三范式和BCNF范式的理解:生动举例-CSDN博客
3NF和BCNF的区别:Difference Between 3NF and BCNF (with Comparison Chart) - Tech Differences
组合和聚合:UML一一 ...