Python
周先森爱吃素
大家好,我是CSDN博主周先森爱吃素,目前处于研究生阶段,主攻方向为计算机视觉的研究。加入CSDN以来,凭借热爱与坚持,以博文的方式分享所学,截至目前已发文近300篇,内容涉及Python开发、网络爬虫、Linux开发、机器学习、计算机视觉等领域,感谢大家的关注、点赞、评论和收藏,是你们的坚持,促使我在这条路上坚定不移地走下去。未来,我会更加专注于自己喜爱的方向,学习更多的知识,输出更加高质量的文章。
展开
-
Python高级语法-类访问控制
Python的类访问控制机制。原创 2022-10-24 10:15:11 · 871 阅读 · 0 评论 -
Python负数存储
介绍Python负数存储机制的不同。原创 2022-07-11 14:59:41 · 780 阅读 · 0 评论 -
基于TCP的Socket通讯
通过Python实现基于TCP协议的socket通讯。原创 2020-05-27 16:07:37 · 389 阅读 · 0 评论 -
Python高级语法-装饰器(Python语法糖)
Python装饰器原创 2018-10-03 21:30:02 · 9579 阅读 · 1 评论 -
机器学习-关联之Apriori算法原理及实战
Apriori算法前言关联分析是一种无监督的机器学习方法,主要用于发现大规模数据集中事物之间的依存性和关联性。挖掘数据中隐藏的有价值的关系(如频繁项集、关联规则),有利于对相关事物进行预测,也能帮助系统制定合理决策。关联分析的典型例子就是购物篮分析,通过发现顾客放入购物篮中不同商品之间的联系,分析顾客的购买习惯。通过了解哪些商品频繁地被顾客同时购买可以帮助零售商制定营销策略。另外,...原创 2019-03-27 19:47:35 · 864 阅读 · 0 评论 -
广度优先遍历算法-03树的右侧问题
树的右侧简介一个有点变形的二叉树的层序遍历。问题描述现在有一个果树,该树果子节点符合二叉树的分布,小王按照规定只能摘到从树的右侧看过去看到的第一个节点,求出节点序列。问题分析举例如下假定树形如上,小王得到的结果为1,3,5,7。其实,这不过是一个层序遍历,求出每一层最后的那个结果而已。算法流程初始化队列,将根节点入队,当前第一层。遍历队列的每个节点,...原创 2019-04-10 17:09:26 · 306 阅读 · 0 评论 -
深度优先遍历算法-01小偷偷东西问题
小偷偷东西问题前言深度优先遍历是经典的图论算法,深度优先遍历算法的搜索逻辑和它的名字一样,只要有可能,就尽量深入搜索,直到找到答案,或者尝试了所有可能后确定没有解。简单来说,深度优先遍历就是按照某规则(如检索当前节点的第一个子节点)检索某个节点,直到检索完毕再去检索其他节点。搜索问题的本质就是试探问题的所有可能选择,按照特定的规律和顺序,不断去搜索答案,直到找到问题的解。如果把所有可能...原创 2019-04-06 16:09:08 · 2670 阅读 · 0 评论 -
机器学习-集成之AdaBoost算法原理及实战
Boosting和AdaBoost简介Bagging采用的是一种多个分类器简单评分的方式。而Boosting是和Bagging对应的一种将弱分类器组合成为强分类器的算法框架,它根据分类器学习误差率来更新训练样本的权重。AdaBoost算法就是Boosting算法的一种。它建立在多个若分类器的基础上,为分类器进行权重赋值,性能好的分类器能获得更多权重,从而使评分效果更理想。原理Ad...原创 2019-04-01 19:33:53 · 1296 阅读 · 0 评论 -
深度优先遍历算法-02最大岛屿问题
最大的岛屿简介比较常见的棋盘类型的DFS问题。问题描述给定一个二维矩阵,其中0代表海洋,1代表陆地(相邻的1连接形成岛屿),现在要求找到最大岛屿面积。是不是有一种LeetCode的既视感。问题分析简单暴力的核心思路就是计算每个岛屿的面积,找到最大的即可。使用从左到右,从上到下的思路遍历矩阵,找到1就说明发现了岛屿,就以岛屿为出发点开始计算面积(根据这个面积决定是否更...原创 2019-04-07 18:41:58 · 1960 阅读 · 2 评论 -
回溯算法-01遍历所有排列方式问题
遍历所有排列方式前言回溯采用试错的方法解决问题,一旦发现当前步骤失败,回溯算法就返回上一个步骤,继续另一种方案继续试错。回溯算法的优点是速度快,没有尝试所有路径就可能找到答案。当然,如果运气不好,回溯算法就是一个暴力遍历(当答案就是最后一条搜索路径)。回溯算法又称为试探法,它的主要思想如上。回溯算法针对大多数问题有如下特点:问题的答案有多个元素、答案需要满足一些约束(如数独)、寻找答案...原创 2019-04-11 19:48:01 · 727 阅读 · 0 评论 -
广度优先遍历算法-02合法的括号问题
合法的括号简介比较基础的BFS题目。注意,由于要对不合法的字符串最小步数删减为合法的字符串,所以BFS合适。之所以选择BFS,是因为要返回的结果为删减最小数目的括号后使字符串合法,“就近搜索显然合适”。问题描述给定一个字符串,字符串会出现字母和"(“以及”)",认为左右括号匹配完全的字符串是合法的,不完全的通过删除若干个括号得到合法字符串,现在要求移除最少数目的括号,使得其合...原创 2019-04-10 16:14:14 · 424 阅读 · 0 评论 -
机器学习-回归之逻辑回归算法原理及实战
逻辑回归简介在一元回归和多元回归模型中,处理的因变量都是数值型区间变量,建立的模型描述的是因变量的期望与自变量之间的线性关系。然而,在实际的问题分析时,所研究的变量往往不全是区间变量而是顺序变量或者属性变量,如二项分布的问题。例如,在医疗诊断中,可以通过分析病人的年龄、性别、体质指数、平均血压、疾病指数等指标,判断这个人是否有糖尿病,假设y=0表示未患病,y=1表示患病,这里的因变量就是...原创 2019-04-05 19:21:09 · 587 阅读 · 0 评论 -
机器学习-集成之随机森林算法原理及实战
Bagging和随机森林前言集成学习是目前机器学习的一大热门方向。简单来说,集成学习就是组合许多弱模型以得到一个预测结果比较好的强模型。对于常见的分类问题就是指采用多个分类器对数据集进行预测,把这些分类器的分类结果进行某种组合(如投票)决定分类结果,从而整体提高分类器的泛化能力。集成学习对于大数据集和不充分数据都有很好的效果。因为一些简单模型数据量太大而很难训练,或者只能学习到一部分,而...原创 2019-03-31 20:39:11 · 997 阅读 · 0 评论 -
机器学习-回归之一元回归与多元回归算法原理及实战
一元回归分析和多元线性回归前言在统计学中,回归分析(Regression Analysis)指的是确定两种或两种以上变量间的相互依赖的定量关系的一种分析方法。该方法常使用数据统计的基本原理,对大量统计数据进行数学处理,并确定因变量与某些自变量的相关关系,建立一个相关性较好的回归方程(函数表达式),并加以外推,用于预测以后的因变量的变化的分析方法。回归分析是一种预测性的建模技术,它研究的是...原创 2019-04-05 14:48:51 · 6120 阅读 · 0 评论 -
机器学习-聚类之K均值(K-means)算法原理及实战
K-means算法前言机器学习方法主要分为监督学习和非监督学习两种。监督学习方法是在样本标签类别已知的情况下进行的,可以统计出各类样本的概率分布、特征空间分布区域等描述量,然后利用这些参数进行分类器设计。在实际应用中,很多情况是无法预先知道样本标签的,因而只能利用非监督机器学习方法进行分析。聚类分析就是典型的非监督学习方法,它在没有给定划分类别的情况下,根据数据自身的距离或者相似度进行样本...原创 2019-04-04 21:03:10 · 1281 阅读 · 0 评论 -
机器学习-关联之FP-Growth算法原理及实战
FP-Growth简介FP-Growth算法是一种发现数据集中频繁模式的有效方法,它在Apriori算法的原理的基础上,采用FP(Frequent Pattern,频繁模式)树数据结构对原始数据进行压缩,大大加快了计算速度。FP-Growth算法把数据集中的事物映射到一棵FP-Tree上,再根据这棵树找到频繁项集,FP-Tree的构建过程只需要扫描两次数据集,特别是在大型数据集上具有很高的...原创 2019-03-29 20:19:52 · 2010 阅读 · 0 评论 -
Web开发-Django表单
Django表单简述虽然在Django的核心组件中没有看到表单的影子,但是熟悉Web开发的都知道,表单控制是至关重要的。表单一般放在某个app目录下的forms.py文件中。基本操作表单绑定状态Django为继承自Form类的表单维护了一个绑定(bound)状态。如果一个表单对象在实例化后被赋予过数据内容,则称该表单出于bound状态。只有处于bound状态的表单才具有数...原创 2019-03-09 20:57:24 · 305 阅读 · 0 评论 -
Web开发-Django视图层
Django视图层简述Django框架处理业务的逻辑一般如下(省略图,源于网络,侵删)可以看到,用户在输入网站的url之后看到的最直接的页面就是视图,而视图是基于HTML模板文件进行渲染的,数据来源于数据库也就是模型层。View是中间的关键部分,衔接HTTP请求、Python程序、HTML模板、ORM数据库。URL映射URL分发(URL dispatcher)映射配置可...原创 2019-03-09 20:14:23 · 270 阅读 · 0 评论 -
深度优先遍历算法-03二叉树路径遍历问题
二叉树路径遍历简述比较基础的一个DFS的题目,但是确实很多难题的模板。LeetCode很多二叉树的题本质上就是这个路径遍历。本题为了输出路径,使用DFS的经典结构栈完成。问题描述给定一个二叉树结构(通过类定义节点及父子关系),输出所有到达叶子节点的路径。(二叉树只是标准二叉树)问题分析明显的遍历题,那么是何种遍历呢?显然,优先的是到达叶子节点而不是辐射更大的范围,这是...原创 2019-04-08 14:56:54 · 1046 阅读 · 0 评论 -
机器学习-降维之主成分分析PCA算法原理及实战
主成分分析前言近年来,随着互联网和信息行业的发展,数据已经渗透到各行各业,成为重要的生产因素如数据记录和属性规模的急剧增长。社会已经进入大数据时代,数据越多越好似乎已经成为公理。然而,数据量并不是越大越好,有时过犹不及,在数据分析应用中大量的数据反而会产生更坏的性能。这些海量数据可能含有噪声或冗余信息,当数据集包含过多的数据噪声时,会导致算法的性能达不到预期的效果。移除信息量较少甚至无效信...原创 2019-04-02 21:21:17 · 1430 阅读 · 0 评论 -
Python高级语法-详解set机制
Python集合(set)机制原创 2019-07-24 21:15:25 · 540 阅读 · 0 评论 -
分治算法-03多项式乘法问题
多项式乘法简介多项式的运算表示是一个很常见的算法问题。问题描述给予两个多项式A(x)与B(x),得出C(x)=A(x)B(x)。例如,A(x)=3+2x+3x2+4x3,B(x)=2+x2,C(x)=6+4x+9x2+10x3+3x4+4x^5。问题分析一般情况下,使用系数表示多项式,不存在的项系数为0。但是,除了系数表示外,多项式还有一种表示叫做点值表示。若多项式...原创 2019-04-18 15:13:14 · 3251 阅读 · 0 评论 -
分治算法-02凸包问题
几何问题之凸包简介简单地说,凸包是正好包含所有点的凸多边形,可以将它想象为一个包围点几何的橡皮筋。之所以叫凸包是因为这个凸多边形包围所有点。本案例主要讲解分治法解决凸包问题,常见的还有Graham扫描法、Jarvis步进法、快包法等。问题描述给定点集合,输出凸包的顶点集合。问题分析分治法讲究分而治之,核心思想很容易理解,难的是想出实施的具体步骤。怎么把大问题拆分成小问题...原创 2019-04-18 13:48:05 · 2289 阅读 · 0 评论 -
分治算法-01连续子序列的最大和问题
连续子序列的最大和前言分治算法的核心思想是将一个规模很大的问题化简为n个规模较小的问题,这些子问题虽然独立而不同,但是问题的本质是一致的,从而达到分而治之的目的。首先通过“分”将问题分解为n个子问题,再将子问题一步步分解,知道达到最小的子问题。这时,“治”子问题再利用子问题的解推导总问题的解。子问题应与原问题拥有同样的结构,或者拥有同样的形式。只有这样,才能利用递归解决子问题。问...原创 2019-04-18 12:56:21 · 1481 阅读 · 0 评论 -
贪心算法-01硬币找零问题
硬币找零问题前言所谓贪心算法,就是遵循某种既定原则,不断选取当前条件下最优的选择来构造每一个子步骤的解决方案,直到获得问题最终的求解。即在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,所做的仅是在某种意义上的局部最优解。利用贪心算法,需要解决两个问题。一是问题是否适合使用贪心算法求解,即所求解问题是否具有贪心选择性质。所谓贪心选择性质,是指应用同一规...原创 2019-04-15 15:36:41 · 4306 阅读 · 0 评论 -
贪心算法-03哈夫曼编码问题
哈夫曼编码简介哈夫曼编码是一种字符编码方式,可以对指定的字符集进行数据压缩,压缩率在20%到90%。问题描述现在有一个包含5个字符{A,B,C,D,E},各个字符的出现频率依次为{0.35, 0.1, 0.2, 0.2, 0.15}。需要构造一种有效的编码类型,使用该编码表达以上字符表时可以产生平均长度最短的位串。问题分析n个字符组成的文本编码时有两种方式,定长编码(为...原创 2019-04-16 21:35:11 · 2432 阅读 · 0 评论 -
贪心算法-02活动安排问题
活动安排问题简介活动安排问题是需要共享公共资源的一系列活动的高效安排问题,以在限定的资源前提下尽可能多地安排活动。一般,算法题中给出开始结束时间的活动序列都可以使用这种贪心思路。问题描述有若干个活动,第i个活动的开始时间和结束时间是[Si,fi),只有一间教室,活动之间不能交叉,即一个活动结束后另一个才能开始,求解最多能安排多少个活动?问题分析目的是提高教室的利用率,尽...原创 2019-04-16 20:45:03 · 1045 阅读 · 0 评论 -
回溯算法-03八皇后问题
八皇后问题简介回溯法的经典问题。问题描述有8*8=64个格子,每个格子里面可以放一个棋子,现在要求任意两个棋子不在一条横向、纵向或者斜向的直线上。问题分析显然,每一行、每一列都只有一个棋子才有可能满足答案要求。现在,对于这个矩阵,按照行去摆放棋子,第一行只能有一个,假设其在(0,0)的位置,但是现在无法判断棋子在这个位置是否合适,因为后面的棋子都没有确定。所以只能继续...原创 2019-04-13 14:57:17 · 368 阅读 · 0 评论 -
数据挖掘竞赛-美国King County房价预测训练赛
美国King County房价预测训练赛简介DC上的一个回归题(正经的回归题)。比较简单。时间原因(暂时没什么时间看国内旧赛),看了一下网上的解答,改善了一下神经网络就提交了。过程数据获取报名成功后到官网提供的入口下载,或者我的Github也上传了。数据探索简单了解数据格式。训练集有10000条记录,14个特征,描述如下。(注意,官方数据集没有表头)其...原创 2019-04-09 21:40:26 · 5041 阅读 · 9 评论 -
广度优先遍历算法-01寻找制高点问题
寻找制高点简介比较基础的BFS问题,但是是很多算法题的模板。问题描述现在,有一个矩阵,矩阵的每个值代表山的高度(均大于1),现在要求找到这个山的所有制高点。制高点指的是通过这个点可以从上下左右四个边界走出去这个矩阵平面,注意,是四个边界都能走出去。在整个平面的移动规则是从一个点只可以向上下左右四个方向走,并且只能走到不大于自己的值的位置上去。问题分析这是一个典型的搜...原创 2019-04-09 18:24:43 · 1466 阅读 · 0 评论 -
数据挖掘竞赛-北京PM2.5浓度回归分析训练赛
北京PM2.5浓度回归分析训练赛简介DC上的一个回归题,比较简单。时间原因没有细看,提交到70多名就结束了。使用stacking方法结合多个回归模型。过程数据获取官方给定。数据探索训练集有35746条记录,13个字段,有表头,其中pm2.5为目标。叙述数据预处理主要对date属性进行预处理,因为其字符串属性无法参与建模。利用time模块解...原创 2019-04-12 21:08:42 · 5644 阅读 · 10 评论 -
机器学习-降维之奇异值分解SVD算法原理及实战
奇异值分解简介PCA是通过特征值分解来进行特征提取的,但它要求矩阵必须是方阵,但在实际应用场景中,经常遇到的矩阵都不是方阵,如N个学生,每个学生有M门课程,其中N!=M, 这就组成了一个M*N的非方阵矩阵,这种情况下无法使用主成分分析,也限制了特征值分解方法的使用。而奇异值分解(SVD),是线性代数中重要的一种矩阵分解,该方法对矩阵的形状没有要求。原理在很多情况下,数据的一小段携...原创 2019-04-03 13:53:46 · 1197 阅读 · 0 评论 -
回溯算法-02遍历所有组合方式问题
遍历所有的组合方式简介经典的数学组合问题,对应之前的排列问题。问题描述现在有四本书为A,B,C,D,要求选出两本,输出所有的选择情况。问题分析和之前一样,如果试求组合数目,那么DP将会是一个不错的选择,但是DP不是很擅长这种序列输出的题。其实,这还是个回溯题,因为每一步的问题都是一样的只不过参数不一样罢了。每一步都是在剩余书籍中挑出一本。与之前的排列问题不同之处...原创 2019-04-12 14:39:15 · 791 阅读 · 0 评论 -
Web开发-Django模型层
Django模型层简述Django框架处理业务的逻辑一般如下(省略图,源于网络,侵删)可以看到,Django自带了一套ORM机制,这也是Django框架的核心—“全面”,将一切能帮开发者完成的率先完成。使用Django开发,只需要知道它的模型层如何使用,甚至可以不用系统学习过数据库及其使用。在之前的博客,我已经初步介绍了Django的主要组件,以及搭建了一个小站点,在这篇,将详...原创 2019-03-09 11:44:22 · 283 阅读 · 0 评论 -
深度学习-人工神经网络概述
人工神经网络简述很多术语听起来很唬人,“人工神经网络”就属于其中之一。在很多人看来,我们对人类的神经系统还没有研究透彻,这就来了一个“人工的”神经网络,人脑这样复杂,那么人工神经网络一定相当高深莫测。如果遇到一个耐心的学术专家,花上一两个小时给你讲讲人工神经网络的底细,那么你会发现,就这么回事而已。但是,如果遇到一个不太耐心或者喜好卖弄的,那么不好意思,你除了对他肃然起敬剩下的就是“这东西...原创 2019-03-02 21:25:40 · 2706 阅读 · 0 评论 -
机器学习-分类之决策树原理及实战
决策树简介决策树是一个非参数的监督学习方法,又称为判定树,是运用于分类的一种树结构,其中的每个内部节点代表对某一属性的一次测试,每条边代表一个测试结果,叶子节点代表某个类或者类的分布。简单决策树决策树的决策过程一般需要从决策树的根节点开始,将待测数据与决策树中的特征节点进行比较,并按照比较结果选择下一个比较分支,直到叶子节点作为最终的决策结果。决策树除了用于分类外,还可以用于回...原创 2019-03-01 17:11:24 · 585 阅读 · 0 评论 -
python基础语法-对目录(文件夹)的操作
这里只介绍基础的常用操作,更多操作可以查看官方参考文档。 文件夹操作需要引入标注库的os模块。 1.创建目录 os.makedirs(path) 其中的path之路径,可以绝对路径(指定盘符,每一步文件夹),相对路径(当前工作目录)。import ospath = "hello"os.makedirs(path)可以看到这个目录被创建了。 但是我们再次执行,出现错误。...原创 2018-08-08 10:52:22 · 696 阅读 · 0 评论 -
python基础语法-对文件的操作
这里简单介绍基础的文件操作,基础的文件夹操作见:https://blog.csdn.net/zhouchen1998/article/details/81503819 对文件的操作对于数据的永久存储起着至关重要的作用。 文件的操作主要分为写入和读取。 但是无论哪种操作都要先建立文件流也就是要找到或者打开文件。 一般而言,写法如下: f = open('filename', 'mode',...原创 2018-08-08 10:53:27 · 415 阅读 · 0 评论 -
python高级语法-高阶函数之map的使用方法
python标准库内置了不少常用的高阶函数。 这里简单介绍一下比较实用的几个的用法。 首先,什么叫高阶函数? 高阶函数,把函数作为参数的函数,这是源于python中函数可以像变量一样赋值等操作,这是其他语言不支持的。 1.mapmap(fun,list)是python内置的,它接受一个函数fun和一个list,通过把函数fun一次作用于每个元素上,得到新的list并返回,但是不会改变...原创 2018-08-12 10:10:25 · 1318 阅读 · 1 评论 -
python爬虫-初步使用Scrapy分布式爬虫(爬取mcbbs整合包保存名称及主要mod),大爱MC
首先介绍一下scrapy。 Scrapy一个开源和协作的框架,是为了页面抓取所设计的,使用它可以快速、简单、可扩展(通过中间件)的方式从网站中提取所需的数据。 工作流程如下 Scrapy Engine是scrapy的核心,负责数据流的管理。Spiders(爬虫)发出Requests请求,请求经由Scrapy Engine传递给Scheduler(调度器),Scheduler通过Down...原创 2018-08-02 15:45:37 · 951 阅读 · 0 评论