index函数

cross_val_score 交叉验证与 K折交叉验证,嗯都是抄来的,自己作个参考

谁说胖子不能爱 提交于 2020-01-24 06:52:35
因为sklearn cross_val_score 交叉验证,这个函数没有洗牌功能,添加K 折交叉验证,可以用来选择模型,也可以用来选择特征 sklearn.model_selection.cross_val_score(estimator, X, y=None, groups=None, scoring=None, cv=None, n_jobs=1, verbose=0, fit_params=None, pre_dispatch=‘2*n_jobs’) 这里的cv 可以用下面的kf 关于scoring 参数问题 如果两者都要求高,那就需要保证较高的F1 score 回归类(Regression)问题中 比较常用的是 'neg_mean_squared_error‘ 也就是 均方差回归损失 该统计参数是预测数据和原始数据对应点误差的平方和的均值 公式长这样,了解下就ok了 K折交叉验证:sklearn.model_selection.KFold(n_splits=3, shuffle=False, random_state=None) n_splits:表示划分几等份 shuffle:在每次划分时,是否进行洗牌 random_state:随机种子数 属性: ①get_n_splits(X=None, y=None, groups=None):获取参数n_splits的值

python基础三大器之装饰器

喜夏-厌秋 提交于 2020-01-22 06:02:21
闭包 由于闭包这个概念比较难以理解,尤其是初学者来说,相对难以掌握,所以我们通过示例去理解学习闭包。 给大家提个需求,然后用函数去实现:完成一个计算不断增加的系列值的平均值的需求。 例如:整个历史中的某个商品的平均收盘价。什么叫平局收盘价呢?就是从这个商品一出现开始,每天记录当天价格,然后计算他的平均值:平均值要考虑直至目前为止所有的价格。 比如大众推出了一款新车:小白轿车。 第一天价格为:100000元,平均收盘价:100000元 第二天价格为:110000元,平均收盘价:(100000 + 110000)/2 元 第三天价格为:120000元,平均收盘价:(100000 + 110000 + 120000)/3 元 ........ series = [] def make_averager(new_value): series.append(new_value) total = sum(series) return total / len(series) print(make_averager(100000)) print(make_averager(110000)) print(make_averager(120000)) 从上面的例子可以看出,基本上完成了我们的要求,但是这个代码相对来说是不安全的,因为你的这个series列表是一个全局变量,只要是全局作用域的任何地方

数据结构与算法----->数据结构----->堆

♀尐吖头ヾ 提交于 2020-01-22 04:18:25
13.1 堆的概念 堆是一种二叉树,是一种特殊的二叉树 节点的子节点的关键字 13.2 java程序实现堆这种数据结构 13.2.1编程思路:   step1,首先了解堆的概念 堆是完全二叉树 使用数组来存储堆元素,熟记数组元素下标和子节点、父节点的关系 如果堆中某个节点的数组下标为x,那么    熟记“”堆条件“”           step2,依据堆的概念,设计class Heap中成员函数—— fun:删除堆中关键值最大的节点 编程思路         java代码      step3,依据堆的概念,设计class Heap中的成员函数—— fun:往现有的堆中插入一个新的节点 编程思路: 向上筛选,使得新插入的节点关键值小于父节点关键值,大于子节点关键值,使得新的二叉树重新满足“”堆条件“” 只需要将新节点关键值和其“”暂时位置“”上的父节点的关键值相比较,并根据需要交换位置即可    java代码: trickleUp(int index)函数将新节点向上筛选使得重新满足堆条件,该函数的参数是节点在存储堆元素的数组中的位置下标 应注意上述程序中插入的一个新的节点之后,数组大小currentSize++           step4,依据堆的概念,设计class Heap中的成员函数—— fun:改变的堆中某个节点的值 编程思路: 如果该节点的关键值降低了

如何仅用递归函数和栈操作逆序一个栈

 ̄綄美尐妖づ 提交于 2020-01-22 00:59:34
题目    将一个栈里面的元素逆序,只能用递归函数来实现,不能用其他数据结构。 要求 只能用递归函数来实现 可以使用现成的栈类型 思路   为了将栈逆序,只需要按顺序将栈顶至栈底的元素拿出并移除,放置到栈顶中,这样就可以将栈逆序。 代码 实现代码 import java.util.Stack; /** * Created by wentian on 16/6/10. */ public class ReverseStack<T> { public Stack<T> reverseStack(Stack<T> stackData) { int size = stackData.size(); T pushElement = null; for (int i = 0; i < size; i++) { pushElement = getAndPopBottomElement(stackData, i); stackData.push(pushElement); } return stackData; } public T getAndPopBottomElement(Stack<T> stackData, int index) { T bottom = stackData.pop(); if (0 == index) return bottom; T result =

Pytorch调研笔记

随声附和 提交于 2020-01-21 16:07:51
Pytorch 训练调研 首先我们简单说明一下,这么多深度学习框架中,为什么选择PyTorrch呢? 因为PyTorch是当前难得的简洁优雅且高效快速的框架。在笔者眼里,PyTorch达到目前深度学习框架的最高水平。当前开源的框架中,没有哪一个框架能够在灵活性、易用性、速度这三个方面有两个能同时超过PyTorch。下面是许多研究人员选择PyTorch的原因。 1、简洁:PyTorch的设计追求最少的封装,尽量避免重复造轮子。不像TensorFlow中充斥着session、graph、operation、name_scope、variable、tensor、layer等全新的概念,PyTorch的设计遵循tensor→variable(autograd)→nn.Module 三个由低到高的抽象层次,分别代表高维数组(张量)、自动求导(变量)和神经网络(层/模块),而且这三个抽象之间联系紧密,可以同时进行修改和操作。 简洁的设计带来的另外一个好处就是代码易于理解。PyTorch的源码只有TensorFlow的十分之一左右,更少的抽象、更直观的设计使得PyTorch的源码十分易于阅读。 2、速度:PyTorch的灵活性不以速度为代价,在许多评测中,PyTorch的速度表现胜过TensorFlow和Keras等框架 。框架的运行速度和程序员的编码水平有极大关系,但同样的算法

398. Random Pick Index随机pick函数

坚强是说给别人听的谎言 提交于 2020-01-20 06:59:33
[抄题]: Given an array of integers with possible duplicates, randomly output the index of a given target number. You can assume that the given target number must exist in the array. Note: The array size can be very large. Solution that uses too much extra space will not pass the judge. Example: int[] nums = new int[] {1,2,3,3,3}; Solution solution = new Solution(nums); // pick(3) should return either index 2, 3, or 4 randomly. Each index should have equal probability of returning. solution.pick(3); // pick(1) should return 0. Since in the array only nums[0] is equal to 1. solution.pick(1); [暴力解法

Lua防止创建未预期的全局变量详解

佐手、 提交于 2020-01-20 03:16:58
本文介绍cocos Lua项目的禁用创建默认环境下全局变量的做法,代码取自src\cocos\framework\init.lua,先直接上代码 -- export global variable local __g = _G cc.exports = {} setmetatable(cc.exports, { __newindex = function(_, name, value)--若需要赋值全局变量比如a=2,需要写成cc.exports.a=2 rawset(__g, name, value) --通过__newindex元方法将对cc.exports的赋值转变为对_G的赋值,因此并不对cc.exports赋值 end, --因此访问时,直接访问_G即可:print(a) --打印2 __index = function(_, name) return rawget(__g, name)--通过__index元方法将对cc.exports的访问转变为对_G的访问 end }) -- disable create unexpected global variable function cc.disable_global() setmetatable(__g, { __newindex = function(_, name, value)--全局环境一旦赋值后会调用这里设置的

pandas

╄→尐↘猪︶ㄣ 提交于 2020-01-20 00:09:21
1.数据导入与导出 # 数据导入 pd.read_csv(filename) # 导入csv格式文件中的数据 pd.read_table(filename) # 导入有分隔符的文本 (如TSV) 中的数据 pd.read_excel(filename) # 导入Excel格式文件中的数据 pd.read_sql(query, connection_object) # 导入SQL数据表/数据库中的数据 pd.read_json(json_string) # 导入JSON格式的字符,URL地址或者文件中的数据 pd.read_html(url) # 导入经过解析的URL地址中包含的数据框 (DataFrame) 数据 pd.read_clipboard() # 导入系统粘贴板里面的数据 pd.DataFrame(dict) # 导入Python字典 (dict) 里面的数据,其中key是数据框的表头,value是数据框的内容。 # 数据导出 df.to_csv(filename) # 将数据框 (DataFrame)中的数据导入csv格式的文件中 df.to_excel(filename) # 将数据框 (DataFrame)中的数据导入Excel格式的文件中 df.to_sql(table_name,connection_object) # 将数据框 (DataFrame

babyfengshui

谁说我不能喝 提交于 2020-01-19 20:18:42
babyfengshui-wirteup 这一道题是个非常经典的入门级堆题, 涉及的知识点不多,思考的确实比较多,而且比较巧合. 首先我来讲一下解题思路: 想方设法如何调用system函数,且传参为'/bin/sh' 想要实现以上功能,就的需要获取libc的基址,然后修改某个函数的got表 最后调用被修改got的函数,即可调用我们想要执行的函数 传参问题: 这个题恰好有个name堆来储存前一个描述堆的地址,且有一个指针数组储存name堆的地址 所以只需根据开辟的index来控制参数的值. 接下来我会慢慢地细讲... 如何获取libc的基地址 这个有两种方法可以实现,一个是利用堆的unsorted bin指向main_arena然后计算基地址 另一个是想方设法修改name堆中的第一个存储描述堆的地址为free或其他函数的got地址 然后在打印,即可获取到free函数libc中的地址,现在我讲的是第二种方法,比较简单. 那我们如何构造堆溢出呢? 先看一下ida逆向出的东西. 可以发现,每增加一个,就会连续创建两个堆,且第二个堆大小为0x80 然后描述堆的地址会被name堆储存起来,name堆的地址又被指针数组储存起来. 进入sub_8048724(++byte_804B069 - 1)函数看看 这里会有一个判断,描述图片上有,我就不说了 那好,基本上程序就是这样

迭代 装饰器 闭包

给你一囗甜甜゛ 提交于 2020-01-18 11:16:28
迭代器: 包含yield表达式的函数是特殊的函数,叫做生成器函数(generator function),被调用时将返回一个迭代器(iterator),调用时可以使用next或send(msg)。它的用法与return相似,区别在于它会记住上次迭代的状态,继续执行。 send(msg)与next()的区别在于send可以传递参数给yield表达式,这时传递的参数会作为yield表达式的值,而yield的参数是返回给调用者的值。初始调用时必须先next()或send(None),否则会报错。 举个例子: 首先生成一个迭代器f,f.next()会使生成器函数执行到yield,生成一个值然后挂起。 然后f.next()或f.send(msg)会在生成器函数内部返回值,执行到下一个yield,生成值后挂起 然后f.next()或f.send(msg)会在生成器函数内部返回值,意图执行到下一个yield,但是后面没有yield了,所以抛出异常。 使用yield可以有效简化代码,并减少空间浪费。 举个简单例子:列表中的每个元素+1 传统写法: Python代码 def addlist(alist): r = [] for i in alist: r.append(i+1) return r 复制代码 yield写法: Python代码 def addlist(alist): for i in