def

机器学习之决策树三-CART原理与代码实现

可紊 提交于 2021-02-18 17:53:04
决策树系列三—CART原理与代码实现 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/9482885.html ID3,C4.5算法缺点 ID3决策树可以有多个分支,但是不能处理特征值为连续的情况。 在ID3中,每次根据“最大信息熵增益”选取当前最佳的特征来分割数据,并按照该特征的所有取值来切分, 也就是说如果一个特征有4种取值,数据将被切分4份,一旦按某特征切分后,该特征在之后的算法执行中, 将不再起作用,所以有观点认为这种切分方式过于迅速。 C4.5中是用信息增益比率(gain ratio)来作为选择分支的准则。和ID3一样,C4.5算法分类结果存在过拟合。 为了解决过拟合问题,这里介绍一种新的算法CART。 CART(classification and regression tree) CART由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。 分类:如晴天/阴天/雨天、用户性别、邮件是否是垃圾邮件; 回归:预测实数值,如明天的温度、用户的年龄等; CART决策树的生成就是递归地构建二叉决策树的过程,对分类、以及剪枝采用信息增益最大化准则,这里信息增益采用的基尼指数公式, 当然也可以使用ID3的信息熵公式算法。 基尼指数 分类问题中,假设有K个类别,样本点属于第 类的概率为

python接口自动化(二十一)--unittest简介(详解)

半世苍凉 提交于 2021-02-18 15:29:42
简介   前边的随笔主要介绍的requests模块的有关知识个内容,接下来看一下python的单元测试框架unittest。熟悉 或者了解java 的小伙伴应该都清楚常见的单元测试框架 Junit 和 TestNG,这个招聘的需求上也是经常见到的。python 里面也有单元 测试框架-unittest,相当于是一个 python 版的 junit。python 里面的单元测试框架除了 unittest,还有一个 pytest 框架,这个实际上用的比较少,后面有空再继续介绍和分享。unittest单元测试框架不仅可以适用于单元测试,还可以适用WEB自动化测 试用例的开发与执行,该测试框架可组织执行测试用例,并且提供了丰富的断言方法,判断测试用例是否通过,最终生成测试结果。 学习和了解unittest 1、查看其中文官网: https://docs.python.org/zh-cn/3/library/unittest.html 英文官网: https://docs.python.org/3/library/unittest.html 2、先导入 unittest用 help 函数查看源码解析查看描述: Python unit testing framework, based on Erich Gamma's JUnit and Kent Beck's Smalltalk

python 学习笔记---Locust 测试服务端性能

自作多情 提交于 2021-02-18 13:43:27
由于人工智能的热度, python目前已经成为最受欢迎的编程语言,一度已经超越Java 。 本文将介绍开源的python 测试工具: locust 使用步骤: 1. 安装python 3.0以上版本 2. 安装Pip 3. 安装locust pip install locustio (windows系统下) 4. 阅读或者下载 locust 源码 一、Locust 的基本实现原理 服务端性能测试工具最核心的部分是压力发生器,核心要点有两个,一是真实模拟用户操作,二是模拟有效并发。 在 Locust 测试框架中,测试场景是采用纯Python脚本。对于最常见的 HTTP(S) 协议的系统, Locust 采用Python的 requests 库作为客户端,而对于其它协议类型的系统, Locust 也提供了接口,只要我们能采用Python编写对应的请求客户端,就能方便地采用 Locust 实现压力测试。从这个角度来说, Locust 可以用于压测任意类型的系统。 在模拟有效并发方面, Locust 的优势在于其摒弃了进程和线程,完全基于事件驱动,使用 gevent 提供的 非阻塞IO 和 coroutine 来实现网络层的并发请求,因此即使是单台压力机也能产生数千并发请求数;再加上对分布式运行的支持,理论上来说, Locust 能在使用较少压力机的前提下支持极高并发数的测试。 二、

python实时监控服务器性能

跟風遠走 提交于 2021-02-18 12:54:40
监控服务器各项性能指标,以下为监控测试流程 1、mysql数据库插入数据 1.1 大家要首先在服务器上安装一个mysql,此项略。。。 1.2 登录mysql新建一个cpu库和cpu表 1.3 连接数据库,代码如下 1 import pymysql 2 class Conn: 3 def __init__ (self): 4 self.connect = pymysql.connect( 5 host = " 192.168.1.124 " , 6 port = 3306 , 7 user = " root " , 8 passwd = " testmysql " , 9 db = " cpu " , 10 charset = " utf8 " 11 ) 12 self.cur = self.connect.cursor() 13 14 def insert(self,data): 15 sql = " insert into cpu(cpu_idle,memory_used,memory_free,disk_C_free) values ('%s','%s','%s','%s') " 16 self.cur.execute(sql% data) 17 # self.connect.close() 18 self.connect.commit() 19 20 # if __name

Linux CPU性能分析与监控——vmstat、top

倾然丶 夕夏残阳落幕 提交于 2021-02-18 12:54:06
Linux性能监控工具汇总: - iostat 磁盘性能监控 - vmstat 虚拟内存性能监控、CPU监控(进程上下文切换、CPU利用率) - top 系统负载、CPU使用率、各个进程的详细报告(CPU使用率、内存使用情况)等 - free 内存使用情况。 - ps ps命令不算是性能监控工具,但是可以使用ps配合上述命令,找到占有系统资源较高的进程 本文重点讲下vmstat的用法,其他如top不做讲解,基本上vmstat的报告能看到,top的也差不多。top报告如有不懂得地方,可以man top 一、vmstat用法   vmstat命令主要用于查看虚拟内存的,但是也可以查看系统其他资源的使用情况,如CPU vmstat [interval] [count] vmstat选项 -a 显示活跃内存(active)和非活跃内存(inact) -f 显示从系统启动至今的fork数量 -m 显示slabinfo -s 静态显示内存相关信息 首先运行一个默认命令, 根据输出结果,解释下各个字段的含义,有助于下面的分析。 [root@master ~]# vmstat procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd free buff cache si so

【python实现卷积神经网络】卷积层Conv2D反向传播过程

孤人 提交于 2021-02-18 07:36:29
代码来源: https://github.com/eriklindernoren/ML-From-Scratch 卷积神经网络中卷积层Conv2D(带stride、padding)的具体实现: https://www.cnblogs.com/xiximayou/p/12706576.html 激活函数的实现(sigmoid、softmax、tanh、relu、leakyrelu、elu、selu、softplus): https://www.cnblogs.com/xiximayou/p/12713081.html 损失函数定义(均方误差、交叉熵损失): https://www.cnblogs.com/xiximayou/p/12713198.html 优化器的实现(SGD、Nesterov、Adagrad、Adadelta、RMSprop、Adam): https://www.cnblogs.com/xiximayou/p/12713594.html 本节将根据代码继续学习卷积层的反向传播过程。 这里就只贴出Conv2D前向传播和反向传播的代码了: def forward_pass(self, X, training= True): batch_size, channels, height, width = X.shape self.layer_input = X # Turn

python笔试题

夙愿已清 提交于 2021-02-18 01:50:39
1、python中is和==的区别 A.Python中对象包含的三个基本要素,分别是:id(身份标识) 、type(数据类型)和value(值)。 B.‘==’比较的是value值 C.‘is’比较的是id 2、简述read、readline、readlines的区别 read读取整个文件 readline读取下一行数据 readlines读取整个文件到一个迭代器以供我们遍历(读取 到一个list中,以供使用,比较方便) 3、举例说明创建字典的至少两种方法 # 1 dict1 = {key1:v1,key2:v2} # 2 dict2 = {} dict2[key1] = v1 dict2[key2] = v2 # 3 dict3 = dict(key1=v1,key2=v2) 4、*args,**kwargs的作用是什么?如何使用? *args和**kwargs通常使用在函数定义里,*args允许函数传入不定量个数的非关键字参数,**kwargs允许函数传入不定量个数的关键字参数 5、python中match()和search()的区别? match()函数只检测RE是不是在string的开始位置匹配, search()会扫描整个string查找匹配, 也就是说match()只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match()就返回none 6

Python实战

半城伤御伤魂 提交于 2021-02-18 01:24:30
背景 如果说PHP是世界上最美丽的语言,那么python一定是最简单,最强大,最容易的语言!重点是,这两门语言我都不懂!随着人工智能领域的风生水起,python的热度也是持续飙升,作为当下最热门的语言,怎么能不让人心动呢! 趁着过年这段时间,补充了一下python相关的基础知识,可以说是简单的入门了,如果有一点代码基础,入门python可以说是非常容易,但是,并非入门了python就意味着你可以拿着简历到处招摇撞骗了,入门虽然容易,但是还需要很多项目实战,类库的学习沉淀,你才可以在python的世界里面风风火火玩起来! 早两天看到了这样一道推理题,可以称得上是变态。题目如下: 第一题就足够虎住大部分人,仔细分析,这些题目有一个特点,信息量大,计算量大。这种任务,给计算机来做事最合适不过的了!那就拿python来练练手吧! 项目分析 任务共分为10道题,有10个答案,每道题之间有一定的联系,而且关系也比较复杂,但比较明确。方案分为两种: 模拟法 :即模拟人的解题行为,找到10题中的突破口,尝试推出下一题,并以此为跳板,推出下一题,一旦出错,从头开始尝试,直到推出所有答案 穷举法 :这是一种非常规的解题方法,目的是利用计算机的计算优势,枚举可能的所有答案组合,逐个验证每题的正确性,直到所有题目都验证通过。 很显然,穷举法的复杂度要明显低于模拟法,但是执行时间要远高于模拟法

python内置常用高阶函数(列出了5个常用的)

拈花ヽ惹草 提交于 2021-02-17 17:03:04
原文使用的是python2,现修改为python3,全部都实际输出过,可以运行。 引用自:http://www.cnblogs.com/duyaya/p/8562898.html https://blog.csdn.net/cv_you/article/details/70880405 python内置常用高阶函数: 一、函数式编程 •函数本身可以赋值给变量,赋值后变量为函数; •允许将函数本身作为参数传入另一个函数; •允许返回一个函数。 1、 map()函数 是 Python 内置的高阶函数,它接收一个函数 f 和一个 list, 并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回 def add(x): return x+ x print (map(add,[1, 2, 3 ])) # Out:<map object at 0x00000239E833DE48> print (list(map(add,[1, 2, 3 ]))) # Out:[2, 4, 6] 2、 reduce()函数 reduce()函数也是Python内置的一个高阶函数。 reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数f必须接收两个参数, reduce(

决策树-缺失值处理

拥有回忆 提交于 2021-02-17 13:31:19
缺失值算是决策树里处理起来比较麻烦的了,其他简单的我就不发布了。 # encoding:utf-8 from __future__ import division __author__ = ' HP ' import copy import math import numpy as np import pandas as pd from collections import Counter from sklearn.preprocessing import LabelEncoder # ############################### # id3 # 离散属性 # 多分类 # 多重字典记录学习规则 # 非递归 # 深度优先 # 预剪枝 # ## 缺失值处理 # 解决两个问题 # 如何进行划分属性选择,缺失值如何处理 # 如何进行样本划分,缺失值对应的样本如何划分 # ############################### ''' 缺失值处理 1. 如何进行属性选择 a. 第一次选择划分属性时,样本等权重,均为1,找出未缺失的样本集,计算该样本集的信息增益 和 该样本集的占比,两者相乘即为真正的信息增益 . 注意这时计算占比,就是数个数,因为权重都是1 . 计算信息增益时,P也是数个数 b. 后面选择划分属性时,样本不等权重,找出未缺失的样本集