自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(36)
  • 收藏
  • 关注

原创 机器学习(3)高斯判别分析&朴素贝叶斯分类器

判别模型与生成模型判别模型判别模型是对观测数据进行直接分类,常见的判别模型有逻辑回归和感知机算法等。此模型仅对数据进行分类,并不能具象化或者量化数据本身的分布状态,因此也无法根据分类生成可观测的图像。生成模型与判别模型不同,生成模型首先了解数据本身分布情况,并进一步根据输入 x,给出预测分类 y 的概率。该模型有着研究数据分布形态的概念,可以根据历史数据生成新的可观测图像。贝叶斯分类就是一个典型的例子。在这个例子中,我们有一个先验分类,根据这个先验分类,我们可以使用贝叶斯公式计算每个分类的概率,然

2020-10-19 15:24:43 3480

原创 数据降维(PCA算法在数据降维中的应用)

维度灾难在实际问题中,我们常常会遇到采集到的数据特征数量过多的情况,甚至有时会出现训练集容量比特征数量还少的极端情况(在图片处理领域尤其常见),然而事实上,并不是采集到的每一个特征都对模型有训练意义。维度的增加会导致相当棘手的情况出现,这通常会带来训练数据在高维空间的稀疏性质,为了获得在统计学上正确并且有可靠的结果,用来支撑这一结果所需要的数据量通常随着维数的提高而呈指数级增长。此外,维度的增加会使模型训练的时间增加到无法忍耐的程度。对于这样的问题,对数据进行降维将是很重要的一个手段。主成分分析法

2020-08-07 14:41:04 2935

原创 机器学习(2)逻辑回归

概述逻辑回归是一个常用于解决二分类(即结果只有两个取值)问题的机器学习方法。逻辑回归假设因变量y服从伯努利分布(0-1分布)。这里“回归”一词的含义事实上是“分类”。例如一个简单的逻辑回归应用场景:当我们得知一个肿瘤的大小,而需要预测该肿瘤是良性还是恶性。可以看到,我们实际要做的是给出一个肯定或否定的答案,也即我们最后需要的结果是{良性、恶性}集合中的一个取指。从函数的角度看,我们是将取值范围为自定义(通常为(−∞,∞)(-\infty,\infty)(−∞,∞))的值映射到集合{0,1}。假设

2020-07-09 22:38:52 429

原创 机器学习(1)多元线性回归

概述线性回归是一个典型的监督学习问题,它常常被用来解决连续值的预测问题。我们通常需要给出一个训练集,训练集中包含已知的目的数据,同时还有与该预测可能相关的特征。一个简单的一元线性回归的示例是:我们能否给出房屋价格与房屋面积的关系预测?(或者给出当房屋面积为某个值时,房价的一个预测)其中我们要给出一个训练集,训练集中包含多个房屋面积与对应房屋价格的真实数据。符号约定与术语解释术语解释特征:在本例中,房屋的面积、房屋的建筑年龄等一些与房屋价格可能相关的都是特征。特征向量:我们通常将同一个对象的

2020-05-18 23:26:55 1397

原创 Linux开发环境及应用

在Windows平台下登陆远程Linux我们使用提供SSH服务的应用来实现远程登录Linux,在这里我使用的应用软件是MobaXterm,只需指定需要登录主机的IP地址,使用用户名和密码实现远程登录。SSH(安全外壳协议)的具体情况详见https://zh.wikipedia.org/wiki/Secure_Shell,这是一个应用层协议,其使用的传输层协议是TCP,使用端口22。常用命...

2020-02-26 23:09:42 1325

原创 统计学习方法笔记(1)概论

人们提到机器学习时,大多数指的是统计机器学习。统计学习的目的从数据出发,提取数据的特征,抽象出模型后,又回归到对数据的分析与预测中去。对未知新数据的预测与分析常常会带来新的知识。统计学习的方法统计学习由 监督学习、非监督学习、半监督学习、强化学习 组成。我们的讨论都以监督学习为主。实现统计学习的步骤如下:1.得到一个有限的训练数据集合;2.确定包含所有可能的模型的假设空间,即学...

2020-02-12 19:39:32 287

原创 python实现爬虫查看冠状病毒肺炎疫情

介绍本文是使用python语言实现的简单爬虫,用于爬取官方网站给出的具体数据,以便得知具体的肺炎疫情状况。数据来源本次我们使用的数据来源是 丁香医生的疫情通报网站我们将通过下面这些代码得到我们想要的疫情数据。同时我们使用pyecharts库,为河南省内所有数据绘制了一份疫情地图。值得注意的是:这个网站其中的一部分内容是使用js异步加载出的,因此我们并不能直接找到上面图片中那些数据的直接...

2020-02-09 16:43:29 1586

原创 最接近点对-分治法-C++实现

算法思想本实验使用了分治法的算法思想,所谓分治,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。因此使用分治法解决问题一般有以下三个步骤:分解:将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小。解决:递归的求解子问题,当子问题的规模足够小时,停止递归直接求解。合并:将子问题...

2020-01-11 18:39:36 2979

原创 WSN无线传感器网络复习

无线传感器网络复习3.Node Architecture3.1 模拟信号数字信号转换Avibration sensor outputs an analog signal with a peak-to-peak voltage of 5V at afrequency of 100 Hz.(a) What should be the minimum sampling frequency, ...

2020-01-06 15:16:26 6315 2

原创 生产者-消费者问题(多缓冲区版)Windows环境下C++实现

#include<iostream>#include<queue>#include<Windows.h>#include<unordered_map>using namespace std;static const int PRODUCER_SIZE = 2;//生产者数量static const int CONSUMER_SIZE ...

2019-10-28 16:39:14 795

原创 生产者-消费者问题(C++信号量实现)

生产者-消费者问题是很经典的线程同步问题,这段代码给出的是多生产者、多消费者、有界缓冲区的一个C++实现。常见的生产者消费者实现一般是Unix或Linux下的使用Pthread完成的,这里使用WINDOWS环境下的API实现。#include<iostream>#include<queue>#include<Windows.h>#include<...

2019-10-27 16:11:25 4204

原创 More Effective C++ 随笔 1 to 4 基础议题

1.仔细区别pointers与reference(1)当一个指向有可能出现为NULL指向空时,那么应该使用pointers。reference必须要指向一个对象而决不能为NULL,也因此,reference必须要有初始值。同时也正因为reference不含NULL的情况,因此reference会比pointers更富效率(使用前不需要测试其有效性)。(2)当需要可变的指向,也即可能会在不同...

2019-09-24 08:14:03 124

原创 TCP为什么需要三次握手

网上给出的最常见的解释是:若是两次握手,那么可能会产生不可避免的死锁:当客户端发起一个SYN请求,服务器会返回一个ACK确认该请求,然后建立单方向连接。此时若该ACK丢失,那么客户端将会无法得知服务器是否准备好。这种情况下,客户端不会建立反方向的连接,这将导致客户端一直等待ACK,而服务器端则在一直等待客户端发送数据,造成死锁。这个解释问题在于:客户端不会一直傻傻的等待ACK,当一段时间ACK...

2019-09-14 10:08:48 311

原创 《TCP/IP详解·卷1:协议》随笔(已完结)

第一章.概述Internet的成功Internet体系结构被设计成支持现有网络互联,同时提供了广泛的服务与协议操作。选用数据包的分组交换主要是因为它的鲁棒性与效率,而相对来说数据安全性与交付可预测性(例如有限的延迟)是次要因素。分层设计OSI模型:7层TCP/IP:4层(若分层为5层则加上一个物理层)TCP/IP协议族的三个主要层次是网络层、传输层与应用层差错控制与流量控制总体...

2019-09-10 15:25:28 1727

原创 Python之正则表达式

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。操作步骤虽然在 Python 中使用正则表达式有几个步骤,但每一步都相当简单。1.用 import re 导入正则表达式模块。2.用 re.compile()函数创建一个 Regex 对象(记得使用原始字符串)。3.向 Regex 对象的 search()方法传入想查找的字符串。它返回一个 Match 对象。4.调用 Mat...

2019-09-08 21:35:54 524 2

原创 Python随笔

0.注释Python的注释符号为#示例#这是注释1.类型转换用户输入总是默认是字符串类型,常用的显式类型转换方法如下:str() int() float()当使用数字拼接字符串时,需要进行显式类型转换2.算术逻辑运算与C++不同的是,“/”在Python中将直接给出小数值,若要使用整数除法,应使用符号“//”。同时,“%”符号仍代表模运算逻辑运算由 and、or与not实现,...

2019-09-07 11:46:23 186

原创 Java内部类

分类1.成员内部类2.局部内部类(含匿名内部类)成员内部类定义格式:public/private class outerClass{ ... class innerClass{ ... }}该内部类编译出的类二进制文件.class为outerClass$innerClass.class内用外随意访问;外用内需要借用内部对象在内部类的方法中,可以直接使用外部类的一切内...

2019-08-17 12:22:29 82

原创 Java中的反射机制

Java程序运行分为三个阶段: 1.源代码阶段  该阶段中程序仍是后缀为.java的原始代码,或使用javac命令编译后的后缀为.class的二进制编码文件。 2.类阶段  该阶段常常被忽略,但该阶段完成相当重要的工作。程序在完成第一阶段后,不管是.java还是.class文件,都位于磁盘中,无法直接为需要实例化的类提供直接参考或帮助。此时需要完成的工作是:使用Java定义的class类在...

2019-08-15 14:47:31 106

原创 Java实现对象equals()函数的方法

对象equal()方法的实现方法来自《Java核心技术·卷一》(2)是为了判断是否指向同一对象,以优化运行速度。(4)是为了判断超类与子类。(5)(6)是将其做显式转换后,再判断内部域的比较。...

2019-08-13 17:56:07 1274

原创 Eclipse中如何取消空格触发的代码自动补全

Eclipse中写java程序时常常会遇到这样的问题:本来想写 String a=“Hello World !”,但打印a后敲击空格键会将代码自动补全为aString,此时我们无法打出自己想要的变量名,而只能选择系统猜想我们要打出的关键词。解决方法Window/Preferences/Java/Editor/Content Assist只需将Disable insertion trigge...

2019-08-09 11:22:41 986

原创 Effective C++随笔 49 to 52 定制new和delete

49.了解new-handler的行为如上所述,当operator new想要分配内存但未获满足时,会抛出一个异常。但在此之前,会调用一个客户指定的错误处理函数,一个所谓的new-handler,为了指定这个用以处理内存不足的函数,客户必须调用set-new-handler函数,这是一个声明于头文件<new>中的一个标准库函数。其在头文件中的定义如下:下面给出一个如何使用它...

2019-08-03 17:59:19 137

原创 Effective C++随笔 41 to 48 模板与泛型编程

41.了解隐式接口与编译期多态模板及泛型编程与面对对象编程有很大不同,后者显式接口与运行期多态更为重要,而前者则是隐式接口与编译器多态更重要。模板及泛型编程之所以依赖编译器多态,是因为在使用对象时,都要将template具现化,这些具现行为出现在编译期,编译器需搞清楚套用该模板的究竟是什么样的类(例如塞入vector的是int还是char),以不同的template参数具现化会导致调用不同的函...

2019-08-02 16:42:59 125

原创 Effective C++随笔 32 to 40 继承面向对象设计

32.确定你的public继承塑模出is-a关系若我们让B公有继承A,这意味着B同时也是A,且B的约束更严格。

2019-07-30 18:47:21 138

原创 Effective C++随笔 26 to 31 实现

26.尽可能延后变量定义式的出现时间这样做不止能增加程序的清晰度,还能略微改善程序效率。

2019-07-30 14:56:50 145

原创 Effective C++随笔 18 to 25 设计与声明

18.让接口容易被使用,不易被误用例一对于一个表示日期的类,这样设计初看似乎没有什么问题,但它存在的缺点是:这将使用户很容易搞错顺序或错误输入,而编译器并不能检查出这一错误。一个好的做法是:这样,编译器会对非法输入进行报错。例二对于一些类,我们有必要限制它的值可取的范围很常见的一个实现方法是使用枚举enum,但实际上enum可同时用作int类型,因此对于不合法的输入(int),并...

2019-07-28 19:22:44 141

原创 Effective C++随笔 13 to 17 资源管理

资源管理并不单指内存,这里的资源包括内存、文件描述器、互斥锁、图形界面中的字形与笔刷、数据库连接、网络sockets等,其中最常用的是内存资源。13.以对象管理资源为防止资源泄露的一个简单方法是:使用RAII对象,(资源取得即初始化),通常在构造函数中分配资源,在析构函数中释放资源。这样做带来的好处是:对象在离开作用域时,会隐式调用析构函数,将内存释放,不必担心忘记将资源释放及提早return...

2019-07-28 13:29:35 164

原创 Effective C++随笔 5 to 12 构造/析构/赋值 运算

5.了解C++默默编写并调用哪些函数若程序中没有声明,编译器将会自动为其声明一个默认的构造函数与复制构造函数,以及赋值操作符与析构函数。但只有当其被调用或隐式调用时,编译器才会创造出这些函数。编译器补全的复制构造函数与赋值操作符不能处理下面两种情况:(1)含有引用或指针(2)对象中含有const类型元素C++将拒绝编译上述两种情况下的操作,因此如果需要处理上述两种情况,用户应自己设计复...

2019-07-27 15:59:19 131

原创 Effective C++随笔 1 to 4 让自己习惯C++

让自己习惯C++1.视C++为一个语言联邦2.尽量以 const enum inline 代替 #define即以编译器处理替代预处理建议:(1)对于单纯常量,尽量用 const 与 enum 代替(2)对于形似函数的宏,使用 inline 内联函数代替3.尽可能使用 constconst适用范围:(1)在class外部修饰global与namespace作用域中的常量。(2)在...

2019-07-26 20:25:30 164

原创 c++ primer 随笔(7) 特殊工具与技术

优化内存分配c++提供两种方法分配和释放未构造的原始内存:1.allocator类2.标准库中的new和delete操作符应当引起注意的是,这里的内存分配不是分配内存给对象的实体,而是分配一个未使用的空间,此后在这片空间上的操作,都由allocator类给出,这样做实际上实现了内存空间分配与对象构建的分离。使用步骤:由于allocator将内存空间的分配和对象的构建分离,故使用allo...

2019-04-28 19:36:15 282

原创 c++ primer 随笔(6) 用于大型程序的工具

异常处理使用throw抛出异常,使用try catch块捕获并处理异常。异常是通过抛出对象而引发的,该对象的类型决定应该激活哪个处理代码,被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个。异常以类似将实参传入函数的方式抛出和捕获,这要求抛出的异常类型必须是可复制的,若抛出的类型是一个数组或函数,被抛出的对象将自动转化为一个指向数组首地址或函数的指针(事实上函数实参传参也是...

2019-04-15 09:38:05 132

原创 c++设计的一些tips

函数调用传参时,尽量使用传引用而减少使用传值。原因是,当传入一个较大对象时,传值会复制一份相同的内容,这样会调用多次构造函数,带来的代价会比较高。减少成员函数返回值指向成员的非const指针或引用这样导致的结果是,可以借助该类外的引用或非const指针来访问修改该类的内部成员,破坏了类的封装,该成员不再受private与protected的保护,可能随时会被外部读写,导致危险。同样的事情会...

2019-04-11 11:21:41 134

原创 c++标准库(STL)

c++中提供了一些常用的模板类数据结构供用户使用一.string类二.vector类1.初始化方式:vector v1;vector v2(v1); 初始化为v1vector v1(n,i); 初始化为n个ivector v1(n); 初始化为n个默认值虽然可以对给定元素个数的vector对象预先分配空间,但更有效的方式是:先初始化一个空vector对象,...

2019-04-02 19:32:12 330

原创 C++ primer 随笔(5)(模板)

函数模板示例template <class T>T max(T a,T b){ return(a<b)?a:b;}char a,b;char c=max<char>(a,b);templete<typename T,typename S>void max(T a,S b){ //内容 }template&...

2019-03-30 22:30:41 111

原创 C++ primer 随笔(4) (面向对象编程)

protect成员1.像private成员一样,protected成员不能被类的用户访问。2.像public成员一样,protected成员可以被该类的派生类访问。3.派生类只能通过派生类对象访问其基类的protected成员,而不能直接通过基类访问其派生类。友元关系声明class A{friend class B;public: private:protected:...

2019-03-10 18:38:22 135

原创 C++ primer 随笔(3)

标准库类型涉及命名空间的声明分为两种:命名空间指令与命名空间声明using namespace::std;是命名空间指令,加入该语句后,可使用std中定义的所有标识符using std::cin;using std::cout;是命名空间声明,应注意的是:一个using声明只作用于一个命名空间成员两者相比之下,命名空间声明要更加安全,因为命名空间指令中的冲突直接覆盖,而命名空间声明遇...

2019-02-26 16:51:58 108

原创 C++ primer 随笔(2)(变量和基本类型)

变量和基本类型C++支持两种初始化的方式:复制初始化(=)直接初始化(初始化式放在括号中)int val=1024;//复制初始化int val(1024);//直接初始化同时,直接初始化提供了一种重复多次初始化的方法(适用于数组初始化,不需要使用循环赋值初始化)std:string all_nines(10,'9');//all_nines="9999999999"应当注意的是:...

2019-02-25 17:21:23 136

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除