MakeFile
简介概述
该系列笔记参考《跟我一起写makefile》,目前该笔记仅记录工作中有经常遇到的内容,有待补充
在讲述Makefile 之前,还是让我们先来粗略地看一看 Makefile 的规则。
Makefile
target ... : prerequisites ...
command
target 也就是一个目标文件,可以是 Object File,也可以是执行文件。还可以是一个 标签(Label),对于标签这种特性,在后续的“伪目标”章节中会有叙述
prerequisites 就是要生成那个 target 所需要的文件或是目标。
command 也就是make需要执行的命令(任意的 Shell 命令)。
这是一个文件的依赖关系,也就是说target这一个或多个的目标文件依赖于prerequisites中的文件,其生成规则定义在command中。说白一点就是说,prerequisites中如果有一个以上的文件比target文件要新的话,command所定义的命令就会被执行。这就是 Makefile 的规则。
依赖关系的实质上就是说明了目标文件是由哪些文件生成的,换言之, ...
云原生概述
云原生概述
概述
云原生的概念一直以来都很模糊,虽然云原生计算基金会(CNCF)给出了所谓的定义,但是并不能让大家很好的理解云原生的理念,为什么说是理念呢,因为云原生是一种思想,是一种解决方案,很抽象。
随着云原生生态和边界不断的扩大,云原生自身的定义一直在变,不同的公司(Pivotal & CNCF)不同的人对它有不同的定义,同一家公司在不同的时间阶段定义也不一样,根据摩尔定律推断,未来对于云原生的定义还会不断变化。
云计算是什么
说到云原生,就不得不提到云计算,那么什么又是云计算呢?
2006年,亚马逊把基于分布式操作系统聚集起来的强⼤计算能力,通过互联⽹的方分输送给千千万万的普通⽤户,⼈们给这种计算的在线服务,起的名字叫做云计算。
通俗的说,把分布式操作系统聚集起来的强大计算能力像水电一样,成为大众的必需品,输送给千家万户,让每个人都可以高效利用这种计算资源。
就像水龙头一样,我们什么需要水打开水龙头就好了,再也不用去井里挑水喝了;什么时候需要电直接打开开关就好了,再也不用拿两根木头磨来磨去了,但是,你要付费,你得掏钱,天底下没有免费的午餐,因为能量守恒。
云 ...
扩展知识
知识拓展:其他距离公式1 标准化欧氏距离 (Standardized EuclideanDistance):标准化欧氏距离是针对欧氏距离的缺点而作的一种改进。
思路:既然数据各维分量的分布不一样,那先将各个分量都“标准化”到均值、方差相等。
Sk表示各个维度的标准差
如果将方差的倒数看成一个权重,也可称之为加权欧氏距离(Weighted Euclidean distance)。
举例:
X=[[1,1],[2,2],[3,3],[4,4]];(假设两个分量的标准差分别为0.5和1)
经计算得:
d = 2.2361 4.4721 6.7082 2.2361 4.4721 2.2361
2 余弦距离(Cosine Distance)几何中,夹角余弦可用来衡量两个向量方向的差异;机器学习中,借用这一概念来衡量样本向量之间的差异。
二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:
两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦为:
即:
夹角余弦取值范围为[-1,1]。余弦越大 ...
操作系统
操作系统基本知识操作系统简介操作系统是管理计算机硬件的程序,它为应用程序提供基础,并且充当计算机用户和计算机硬件的中介(可以看做是一种资源分配器)
它的具体定义为:
操作系统是一直运行在计算机上的程序(通常称为内核,kernel,常驻于内存), 除了内核部分外,还有其他两类程序,分别是系统程序(与系统运行有关的程序,如某些驱动程序)和应用程序(与系统运行无关的程序,如 QQ 等)
下图为计算机系统组件的抽象层次结构:
计算机系统组件抽象层次结构
可以看到,从底层到顶层依次为:
计算机硬件——>操作系统-——>系统程序和应用程序——–>用户
综上所述,操作系统的定义为:
操作系统是指控制和管理整个计算机系统的硬件和软件资源,合理地组织、调度计算机的工作与资源分配,进而为用户和其他软件提供接口与环境的程序集合。操作系统属于最基本的系统软件。
操作系统的四大特征为:
并发:多道程序设计,是共享的条件
共享:系统中的资源可供内存中多个并发进程共同使用,合理的共享是正确并发的基础
虚拟:一个物理上的实体变为若干逻辑上的对应物。虚拟处理器技术(分时轮转调度)、虚拟内存 ...
Gradle笔记
概述Gradle是一个基于 JVM 的富有突破性构建工具,Gradle 的核心在于基于 Groovy 的丰富而可扩展的域描述语言(DSL)。
Gradle最重要的是Project和Task:
任何一个Gradle项目都是由一个或多个projects组成的,projects其实就是Idea、AndroidStudio中的Module;
tasks是任务,它是Gradle中的原子性操作,如编译、打包、生成javadoc等,一个project中会有多个tasks;
可以通过gradle tasks查看当前可执行的tasks。
需要注意的一些地方:
Gradle设计之初就是一个通用的构建工具,它允许你用它来构建任何应用,唯一的限制是Gradle的远程依赖管理目前仅支持Maven和Ivy的仓库;
Gradle的构建模块是基于task的,Gradle要做的就是按照task之间的依赖关系来组织task按照合适的顺序运行;
Gradle评估(evaluate)和指定构建脚本时有三个固定步骤:
初始化(Initialization): 初始化构建所需的运行环境,并检查哪些projects参与构建
...
Groovy
概述Groovy是一种基于JVM的面向对象语言,如果不声明public/private等访问权限的话,Groovy中类及其变量默认都是public的。
Groovy中有以下特点:
同时支持静态和动态类型
支持运算符重载
对正则表达式的本地支持
可以使用现有的Java库及Java语法
不需要分号
可省略return关键字,默认用最后一个表达式为返回
使用命名的参数初始化beans和默认的构造器:new Server(name: "Obelix", cluster: aCluster)
Groovy里的is()方法等同于Java里的==,Groovy中的==是更智能的equals()
在同一个bean中使用with()来重复某一个操作:
// Java
server.name = application.name
server.status = status
server.sessionCount = 3
server.start()
server.stop()
// Groovy
server.with {
name = application.name
...
聚类算法
聚类算法简介认识聚类算法
使用不同的聚类准则,产生的聚类结果不同。
聚类算法在现实中的应用
用户画像,广告推荐,Data Segmentation,搜索引擎的流量推荐,恶意流量识别
基于位置信息的商业推送,新闻聚类,筛选排序
图像分割,降维,识别;离群点检测;信用卡异常消费;发掘相同功能的基因片段
聚类算法的概念聚类算法:
一种典型的无监督学习算法,主要用于将相似的样本自动归到一个类别中。
在聚类算法中根据样本之间的相似性,将样本划分到不同的类别中,对于不同的相似度计算方法,会得到不同的聚类结果,常用的相似度计算方法有欧式距离法。
聚类算法与分类算法最大的区别聚类算法是无监督的学习算法,而分类算法属于监督的学习算法。
小结
聚类算法分类【了解】
粗聚类
细聚类
聚类的定义【了解】
一种典型的无监督学习算法,
主要用于将相似的样本自动归到一个类别中
计算样本和样本之间的相似性,一般使用欧式距离
聚类算法api初步使用api介绍
sklearn.cluster.KMeans(n_clusters=8)
参数:
n_clusters:开始的聚类中心数量
整型,缺省值=8,生成 ...
集成学习
集成学习算法简介什么是集成学习
集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测。
复习:机器学习的两个核心任务
集成学习中boosting和Baggin
小结
什么是集成学习【了解】
通过建立几个模型来解决单一预测问题
机器学习两个核心任务【知道】
1.解决欠拟合问题
弱弱组合变强
boosting
2.解决过拟合问题
互相遏制变壮
Bagging
BaggingBagging集成原理目标:把下面的圈和方块进行分类
实现过程:
1.采样不同数据集
2.训练分类器
3.平权投票,获取最终结果
4.主要实现过程小结
随机森林构造过程在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。
随机森林 = Bagging + 决策树
例如, 如果你训练了5个树, 其中有4个树的结果是True, 1个树的结果是False, 那么最终投票结果就是True
随机森林够造过程中的关键步骤(用N来表示训练用例(样 ...
决策树算法
决策树算法简介决策树思想的来源非常朴素,程序设计中的条件分支结构就是if-else结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法
决策树:是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果,本质是一颗由多个判断节点组成的树。
怎么理解这句话?通过一个对话例子
想一想这个女生为什么把年龄放在最上面判断!!!!!!!!!
上面案例是女生通过定性的主观意识,把年龄放到最上面,那么如果需要对这一过程进行量化,该如何处理呢?
此时需要用到信息论中的知识:信息熵,信息增益
决策树分类原理熵概念物理学上,熵 Entropy 是“混乱”程度的量度。
系统越有序,熵值越低;系统越混乱或者分散,熵值越高。
信息理论:
1、从信息的完整性上进行的描述:
当系统的有序状态一致时,**数据越集中的地方熵值越小,数据越分散的地方熵值越大。
2、从信息的有序性上进行的描述:
当数据量一致时,系统越有序,熵值越低;系统越混乱或者分散,熵值越高。
1948年香农提出了信息熵(Entropy)的概念。
假如事件A的分类划分是(A1,A ...
逻辑回归
逻辑回归介绍逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。
逻辑回归的应用场景
广告点击率
是否为垃圾邮件
是否患病
金融诈骗
虚假账号
看到上面的例子,我们可以发现其中的特点,那就是都属于两个类别之间的判断。逻辑回归就是解决二分类问题的利器
逻辑回归的原理要想掌握逻辑回归,必须掌握两点:
逻辑回归中,其输入值是什么
如何判断逻辑回归的输出
输入
逻辑回归的输入就是一个线性回归的结果。
激活函数
sigmoid函数
判断标准
回归的结果输入到sigmoid函数当中
输出结果:[0, 1]区间中的一个概率值,默认为0.5为阈值
逻辑回归最终的分类是通过属于某个类别的概率值来判断是否属于某个类别,并且这个类别默认标记为1(正例),另外的一个类别会标记为0(反例)。(方便损失计算)
输出结果解释(重要):假设有两个类别A,B,并且假设我们的概率值为属于A(1)这个类别的概率值。现在有一个样本的输入到逻辑回归输出结果0.6 ...
线性回归
线性回归简介线性回归应用场景
房价预测
销售额度预测
贷款额度预测
举例:
什么是线性回归定义与公式线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。
特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归
线性回归用矩阵表示举例
那么怎么理解呢?我们来看几个例子
期末成绩:0.7×考试成绩+0.3×平时成绩
房子价格 = 0.02×中心区域的距离 + 0.04×城市一氧化氮浓度 + (-0.12×自住房平均房价) + 0.254×城镇犯罪率
上面两个例子,我们看到特征值与目标值之间建立了一个关系,这个关系可以理解为线性模型。
线性回归的特征与目标的关系分析线性回归当中主要有两种模型,一种是线性关系,另一种是非线性关系。在这里我们只能画一个平面更好去理解,所以都用单个特征或两个特征举例子。
线性关系
单变量线性关系:
多变量线性关系
注释:单特征与目标值的关系呈直线关系,或者两个特征与目标值呈现平面的关系
更高维度的我们不用自己 ...
K-近邻算法
K-近邻算法简介什么是K-近邻算法
根据你的“邻居”来推断出你的类别
K-近邻算法(KNN)概念K Nearest Neighbor算法又叫KNN算法,这个算法是机器学习里面一个比较经典的算法, 总体来说KNN算法是相对比较容易理解的算法。
定义
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
来源:KNN算法最早是由Cover和Hart提出的一种分类算法
分类问题:对新的样本,根据其 k个最近邻的训练样本的类别,通过多数表决等方式进行预测。
回归问题:对新的样本,根据其k个最近邻的训练样本标签值的均值作为预测值。
距离公式
两个样本的距离可以通过如下公式计算,又叫欧式距离 ,关于距离公式会在后面进行讨论
电影类型分析假设我们现在有几部电影
其中? 号电影不知道类别,如何去预测?我们可以利用K近邻算法的思想
分别计算每个电影和被预测电影的距离,然后求解
决策规则分类决策规则
分类决策通常采用多数表决,也可以基于距离的远近进行加权投票:距离越近的样本权重越大。
多数表决等价于经验风险最小化 ...