python算法

Python决策树与随机森林简述

孤人 提交于 2020-02-07 00:24:30
关于决策树和随机森林的一些小知识我会在后面陆续更新 决策树属于经典的十大数据分析与挖掘,是一种类似流程图的树结构,其规则就是IF…THE…的思想,可以用于数值型因变量的预测和离散型因变量的分类。该算法简单直观、通俗易懂,不需要研究者掌握任何领域知识或数学推理。而且算法的结果输出具有很强的解释性。通常情况下,将决策树用作很好的预测准确率。 来源: CSDN 作者: Zhongxin#c 链接: https://blog.csdn.net/qq_44852536/article/details/104201215

python大战机器学习——支持向量机

纵然是瞬间 提交于 2020-02-06 18:20:10
  支持向量机(Support Vector Machine,SVM)的基本模型是定义在特征空间上间隔最大的线性分类器。它是一种二类分类模型,当采用了核技巧之后,支持向量机可以用于非线性分类。   1)线性可分支持向量机(也称硬间隔支持向量机):当训练数据线性可分是,通过硬间隔最大化,学得一个线性可分支持向量机   2)线性支持向量机(也称为软间隔支持向量机):当训练数据近似线性可分时,通过软间隔最大化,学得一个线性支持向量机   3)非线性支持向量机:当训练数据不可分时,通过使用核技巧以及软间隔最大化,学得一个非线性支持向量机。 1、线性可分支持向量机   输入:线性可分训练数据集T   输出:最大几何间隔的分离超平面和分类决策函数   算法步骤:     1)构造并且求解约束优化问题,求得最优解w*,b*     2)由此得到分离超平面,以及分类决策函数   若训练数据集T线性可分,最大间隔分离超平面存在且唯一   下面是线性可分支持向量机学习算法的对偶算法:   输入:线性可分训练数据集T   输出:最大集合间隔的分离超平面和分类决策函数   算法步骤:     1)构造并且求解约束最优化问题,求得最优解α*     2)计算w*,同时选择α*的一个正的分量αj*>0,计算b*     3)由此得到最大集合间隔分离超平面和分类决策函数 2、线性支持向量机  

Python学习07:使用dict和set

依然范特西╮ 提交于 2020-02-06 12:50:12
在FirstDemo中创建Directory,名为com.first.dict_set,然后在directory下创建Python文件,名为Demo06。 dict Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list: names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75, 85] 给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。 如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下: >>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} >>> d['Michael'] 95 为什么dict查找速度这么快?因为dict的实现原理和查字典是一样的。假设字典包含了1万个汉字,我们要查某一个字,一个办法是把字典从第一页往后翻,直到找到我们想要的字为止,这种方法就是在list中查找元素的方法,list越大,查找越慢。

Apriori算法(Python篇)

别等时光非礼了梦想. 提交于 2020-02-06 11:57:36
关联规则挖掘是数据挖掘中最活跃的研究方法之一, 最早是针对购物篮分析问题提出的,其目的是为了发现交易数据库中不同商品之间的联系规则,这些规则刻画了顾客购买行为模式,可以用来指导商家科学地安排进货,库存以及货架设计等。 而Apriori算法是第一个关联规则挖掘算法,也是最经典的算法。 以如下的场景为例,使用Python快速实现Apriori算法: 1.场景与需求 一家超市的业务数据库中有销售订单表如下: id为订单号,name为商品名称 来源: CSDN 作者: OMax 链接: https://blog.csdn.net/osvyxcbttw/article/details/104191941

Python学习笔记(14-16)

廉价感情. 提交于 2020-02-06 05:30:14
学习主题:再说字符串等等,杂 学习日期:2020-02-05 Python 版本:3.7.4 列表,元组,字符串的共同点 都可以通过索引得到每一个元素 默认索引都是从0开始 可以通过slice分片得到一个范围中的元素的集合 有很多共同的操作符(重复操作符,拼接操作符,成员关系操作符) list的使用。 >> > c = ( 1 , 3 , 4 ) #这是一个元组 >> > list ( c ) #把c变成了列表 [ 1 , 3 , 4 ] >> > max ( c ) 4 >> > c = tuple ( c ) >> > c ( 1 , 3 , 4 ) >> > max ( c ) 4 >> > a = max ( c ) >> > type ( a ) < class 'int' > 合并打包zip的使用 >> > a = [ 1 , 2 , 3 ] >> > b = [ 4 , 5 , 6 ] >> > c = zip ( a , b ) >> > c < zip object at 0x0000000002CEB808 > >> > type ( a ) < class 'list' > >> > type ( c ) < class 'zip' > >> > list ( c ) [ ( 1 , 4 ) , ( 2 , 5 ) , ( 3 , 6 ) ] 来源: CSDN

【Python数据结构与算法复习day40】1-04常见时间复杂度与大小关系常见时间复杂度之间的关系+常见时间复杂度之间的关系(必背)+n的阶层的时间复杂度比n的n次方的时间复杂度低

眉间皱痕 提交于 2020-02-06 04:16:24
1-04常见时间复杂度与大小关系 文章目录 1-04常见时间复杂度与大小关系 常见的时间复杂度 常见时间复杂度之间的关系 练习: 时间复杂度练习( 参考算法的效率规则判断 ) 解答 常见的时间复杂度 注意,经常将log2n(以 2 为底的对数)简写成logn 常见时间复杂度之间的关系 所消耗的时间从小到大:【必背!!!!!!】 练习: 时间复杂度练习( 参考算法的效率规则判断 ) O(5) O(2n + 1) O(n²+ n + 1) O(3n³+1) 解答 O(5)=O(1) O(2n + 1)=O(n) O(n²+ n + 1)=O(n²) O(3n³+1)=O(n³) 所以 O(5)<O(2n + 1)<O(n²+ n + 1)<O(3n³+1) 来源: CSDN 作者: 汪雯琦 链接: https://blog.csdn.net/qq_35456045/article/details/104185928

LeetCode丨刷题历程及总结

感情迁移 提交于 2020-02-06 01:07:31
历程 花一周左右阅读了 Problem Solving with Algorithms and Data Structures Using Python ,用Python实现各类数据结构和算法。此书的 中文版 。 2019/11/26-2020/2/2,开始刷LeetCode,按标签,通过率从高到低开始,完成218题,对标签重新归纳。 接下来整理之前做过的题目,归纳知识点和模板,还未开始。 标签整理 数据结构 数组 字符串 链表 树 字典树/二叉搜索树 线段树/线状数组 栈/队列 堆 图 拓扑排序 哈希表 并查集 算法 查找 二分查找 排序 快排 堆排序 贪心算法 DFS/BFS 动态规划 递归/回溯/记忆化 分治 双指针/滑动窗口/Line Sweep 其他 设计 数学/几何/脑筋急转弯 位运算 随机/蓄水池抽样/Rejection Sampling Ordered Map/极小化极大 来源: https://www.cnblogs.com/vincent1997/p/12267478.html

Python的基础语法(二)

雨燕双飞 提交于 2020-02-06 01:01:34
0. 前言 接着上一篇 博客 的内容,我将继续介绍Python相关的语法。部分篇章可能不只是简单的语法,但是对初学者很有帮助,也建议读懂。 1. 表达式 由数字、符号、括号、变量等组成的组合。 算术表达式 逻辑表达式 赋值表达式 在Python中,变量无需实现声明,也不需要指定类型。 a = 1 # 无需声明和指定类型 在Python中,赋值即定义,如果一个变量已经定义,赋值相当于重新定义。 2. 内存管理 在其他语言,如C++和C中,内存管理是非常重要的,因为在一段内存地址被释放之后,内存中会留下一个“空洞”,造成内存碎片化。通常地,开发者会利用特定的策略来管理内存,把需要经常变动的值放到一个区域,静态的值放到另一个区域。开发者手动管理维护内存,不仅麻烦,还很容易留下安全隐患。 在Python编程中无须关心变量的存亡,也不关心内存的管理。 Python语言和Java一样,采用了类似的垃圾收集的机制(Garbage Collection)。 简单的理解:首先,在Python中,一切皆对象。Python使用引用计数 ob_refcnt 记录所有对象的引用数。当对象引用数 ob_refcnt 变为0,它就被认为是生命结束了,内存也会被回收。例如在函数运行结束时,局部变量就会被自动销毁,内存被回收。变量赋值给其他对象时,内存被回收。下面举一个例子: num1 = 12 # 定义一个变量

python中sort和sorted函数

橙三吉。 提交于 2020-02-06 01:00:58
在学习python的过程中,感觉python中的排序相和c++中的泛型算法还是比较相似的,但相对于c++而言更加简单易用。 python中列表的内置函数sort()可以对列表中的元素进行排序,而全局性的sorted()函数则对所有可迭代的序列都是适用的;并且sort()函数是内置函数,会改变当前对象,而sorted()函数只会返回一个排序后的当前对象的副本,而不会改变当前对象。 1、内置函数sort() 原型:sort(fun,key,reverse=False) 参数fun是表明此sort函数是基于何种算法进行排序的,一般默认情况下python中用的是归并排序,并且一般情况下我们是不会重写此参数的,所以基本可以忽略; 参数key用来指定一个函数,此函数在每次元素比较时被调用,此函数代表排序的规则,也就是你按照什么规则对你的序列进行排序; 参数reverse是用来表明是否逆序,默认的False情况下是按照升序的规则进行排序的,当reverse=True时,便会按照降序进行排序。 下面 通过简单的例子进行解说: (由于个人爱好原因,我的编译器是pycharm,所以接下来的所有示例都是在pycharm中可以运行的。) #coding:utf-8 from operator import attrgetter,itemgetter list1 = [(2,'huan',23),(12,

【Python数据结构与算法复习day37】1-01-算法引入+“如果 a+b+c=1000,且 a^2 + b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?不允许依赖任何”

元气小坏坏 提交于 2020-02-05 19:11:00
Python数据结构与算法 1-01-算法引入 文章目录 Python数据结构与算法 1-01-算法引入 为什么要学习数据结构与算法? 面试题 解答 枚举法 思路 代码实现 结果 记录时间的代码实现 说明 算法的定义 推荐图书 算法的五大特性 为什么要学习数据结构与算法? 因为算法即兵法,是基本功,要不断地主动学习与积累 面试题 如果 a+b+c = 1000,且 a^2 + b^2 = c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?不允许依赖任何数学公式 解答 不依靠数学公式,我们靠枚举法 枚举法 思路 a=0 b=0 c=0 a=0 b=0 c=1 a=0 b=0 c=2 a=0 b=0 c=0~1000 a=0 b=1 c=0~1000 这样手工也可以解答出 如果题目改成 如果 a+b+c = 2000,且 a^2 + b^2 = c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?不允许依赖任何数学公式 这样的枚举法也是基于实现的 以上就是一个枚举法的思路 程序怎么来写呢 代码实现 # 如果 a+b+c=1000,且 a^2 + b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?不允许依赖任何数学公式 # a # b # c for a in range ( 0 , 1001 ) : for b in range (