摘要:
1. The Problem of Overfitting 1 还是来看预测房价的这个例子,我们先对该数据做线性回归,也就是左边第一张图。 如果这么做,我们可以获得拟合数据的这样一条直线,但是,实际上这并不是一个很好的模型。我们看看这些数据,很明显,随着房子面积增大,住房价格的变化趋于稳定或者说越往右越平缓。因此线性回归并没有很好拟合训练数据。 我们把此类情况称为欠拟合(underfittin... 阅读全文
摘要:
1. Classification 这篇文章我们来讨论分类问题(classification problems),也就是说你想预测的变量 y 是一个离散的值。我们会使用逻辑回归算法来解决分类问题。 之前的文章中,我们讨论的垃圾邮件分类实际上就是一个分类问题。类似的例子还有很多,例如一个在线交易网站判断一次交易是否带有欺诈性(有些人可以使用偷来的信用卡,你懂的)。再如,之前判断一个肿瘤是良性的还是恶... 阅读全文
摘要:
1. Multiple features(多维特征) 在机器学习之单变量线性回归(Linear Regression with One Variable)我们提到过的线性回归中,我们只有一个单一特征量(变量)——房屋面积x。我们希望使用这个特征量来预测房子的价格。我们的假设在下图中用蓝线划出: 不妨思考一下,如果我们不仅仅知道房屋面积(作为预测房屋价格的特征量(变量)),我们还知道卧室的数量、楼层... 阅读全文
摘要:
1. 模型表达(Model Representation) 我们的第一个学习算法是线性回归算法,让我们通过一个例子来开始。这个例子用来预测住房价格,我们使用一个数据集,该数据集包含俄勒冈州波特兰市的住房价格。在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集: 我们来看这个数据集,如果你有一个朋友正想出售自己的房子,如果你朋友的房子是1250平方尺大小,你要告诉他们这房子能卖多少钱。 那么... 阅读全文
摘要:
引言本系列文章是本人对Andrew NG的机器学习课程的一些笔记,如有错误,请读者以课程为准。在现实生活中,我们每天都可能在不知不觉中使用了各种各样的机器学习算法。例如,当你每一次使用 Google 时,它之所以可以运行良好,其中一个重要原因便是由 Google 实现的一种学习算法可以“学会”如何对... 阅读全文
摘要:
IntroductionEthernet 是过去30年以来最为成功的局域网(local area networking)技术。1. First widely used LAN technology (第一次被广泛使用的局域网技术)2. kept up with speed race: 10 Mbps... 阅读全文
摘要:
new & delete expression1. IntroductionA new expression allocates and constructs an object of a specified type.A new[] expression allocates and constru... 阅读全文
摘要:
OOP之类和对象 1. this指针的引入 每个成员函数都有一个额外的隐含的形参,这个参数就是this指针,它指向调用对象的地址。默认情况下,this的类型是指向类类型非常量版本的常量指针。可以表示成如下伪代码形式: /* 假设现在有一个类Sales_data,以及其非常量Sales_data类型... 阅读全文
摘要:
Network Connectivity 1. Important terminologies 1) Link 设备连接的连线。Link本身既可以是有线的,也可以是无线的。 2) Node 设备。电脑,笔记本电脑,手机都可以是Node。 3) Point-to-point 连接的设备只有两个。 4) Multiple access 连接的设备两个以上。多个设备同时去存取的这样一个Link。 ... 阅读全文
摘要:
fundamental integral types or extended integral types 我们先通过下图,来了解可以跨平台使用的整数类型: 之所以我们需要以上各种明确指定宽度的int类型是因为int类型本身比较特殊,其具体的字节数同机器字长和编译器有关(标准并没有规定其具体所占的字节数)。 因此如果要保证移植性,我们应该尽量使用上图中带宽度的int类型。这种数据类型在所有平台下都... 阅读全文
摘要:
引言 在C++中,POD是一个极其重要的概念。要理解POD类型,我们首先需要理解Aggregate类型。下文结合stackoverflow上的高票回答将对Aggregate类型做一个全面的解读。 对于Aggragates的定义 C++标准(C++ 03 8.5.1 §1)中的正式定义如下: An aggregate is an array or a class (clause 9) with n... 阅读全文
摘要:
1. 默认初始化 如果定义变量时没有指定初值,则变量会被默认初始化,此时变量被赋予了“默认值”。 对于类类型的变量来说,初始化都是依靠构造函数来完成的。因此,即使定义某个类的变量(对象)时没有提供初始化式,我们也能通过类的默认构造函数来完成初始化。即,“默认值”由默认构造函数来决定(前提是该类有默认构造函数)。 对于内置类型的变量来说,当定义没有初始化式的变量时,系统有时会帮我们初始化变量。“默认... 阅读全文
摘要:
用户设置 设置全局用户名与邮箱: $ git config --global user.name "Firstname Lastname"
$ git config --global user.email "your_email@your_email.com"
如需将一个文件夹纳入git版本控制,可以cd进入该文件夹,并执行如下命令:
$ git init
获取一个git库
注意:经过add操作... 阅读全文
摘要:
需求 编程实现计算器,当输入一个表达式时,可以得出计算结果。(实现加、减、乘、除、取余以及负号运算) 思路 1. 维护两个栈,一个栈my_dig用于push数字,另一个栈my_op用于push运算符。栈中元素结构如下: typedef struct tag_stack1
{ int dig_arr[1024]; int dig_top;
}DIG, *pDIG; typedef ... 阅读全文
摘要:
引言 让服务器在启动阶段调用fork创建一个子进程池,通过子进程来处理客户端请求。子进程与父进程之间使用socketpair进行通信(为了方便使用sendmsg与recvmsg,如果使用匿名管道,则无法使用以上两个函数)。以下针对TCP进行分析。 server端使用select轮询用于监听客户端请求的被动套接字fd_listen以及用于父子之间通信的socketpair。每当客户端有请求时,ser... 阅读全文
摘要:
引言 本文会写一个并发服务器(concurrent server)程序,它为每个客户请求fork出一个子进程。 注意 1. 信号处理问题 对于相同信号,按信号的先后顺序依次处理。可能会产生的问题是,正在处理sig1信号时,又来了2个或更多的sig1信号,此sig1时只会在处理完原来的sig1信号后,再处理1个sig1信号。因此对于相同信号,会产生信号掉包的问题。 一个儿子退了之后,程序在处理han... 阅读全文
摘要:
1. 快排 详见之前博文快速排序算法。 2. 堆排序 详见之前博文非递归方法的堆排序实现。 3. 简单排序(冒泡排序、选择排序和插入排序) 代码如下: #include #include #include #define N 20static void show(int *arr, int len){ int index; for(index = 0; index 前N-1个数放好位置... 阅读全文
摘要:
思路 1. 通信 为了同步双方的棋盘,每当一方在棋盘上落子之后,都需要发送给对方一个msg消息,让对方知道落子位置。msg结构体如下: /* 用于发给对方的信息 */typedef struct tag_msg{ int msg_type; /* 悔棋? */ int msg_color; int msg_row; int msg_col;}MSG, *pMSG;2.... 阅读全文
摘要:
具体生成动态库的操作及使用该动态库的操作请参见上篇博文。以下仅仅列出改进版本的代码。 代码 my_socket.h #ifndef __MY_SOCKET_H__#define __MY_SOCKET_H__#include #include #include #include #include #include #include #include #define IN#define OUT#de... 阅读全文
摘要:
需求 从一亿个数据中,找出其中最小的10个数。 分析 最笨的方法就是将这一亿个数据,按从小到大进行排序,然后取前10个。这样的话,即使使用时间复杂度为nlogn的快排或堆排,由于元素会频繁的移动,效率也不会是最高的。 实际上我们可以维护一个大小为10的大顶堆,开始可以就将数列中的前10个数用来建堆,根元素最大。之后遍历剩余的数,分别将其与根元素进行比较,只要小于根元素,就将该数替代原来的根元素,成... 阅读全文