python数据挖掘
爬虫、数据清洗、特征工程、建模、可视化
sapienst
Let Data Speak
展开
-
《剑指offer》Python题解:动态规划(一)
一、 连续子数组的最大和leetcode 《剑指offer》:421、题干输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。2、示例输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。3、解题思路(1)状态定义:设动态规划列表dp,dp[i]代表元素nums[i]为结尾的连续子数组最大和。(动态规划问题都需要状态定义,也可原创 2020-07-25 21:17:33 · 260 阅读 · 0 评论 -
秋招笔试系列:阿里724
一、吃烧饼(动态规划)1. 题干吃烧饼,有n个盘子和每个盘子的烧饼数,每次选一个x(x <= n),吃掉第1x号盘子的一个烧饼,若第1x号盘子中有空盘,则不能选择这个x。 假设胃无限大,问最多可以吃多少烧饼。2、样例输入32 1 3输出:43、解题分析状态定义:设dp[i]是第i个盘子中最多能吃到的烧饼的数量(那么每个盘子最多能吃到的饼的数量之和就是返回结果)转移方程:如果第dp[i]个盘子中的烧饼数量比dp[i-1]中的烧饼数量多,那么第i个盘子中只能吃掉和dp[i-1]相等数原创 2020-07-25 11:14:13 · 334 阅读 · 0 评论 -
Python的深拷贝与浅拷贝
一 直接赋值默认为浅拷贝,只传递对象的引用,原始列表改变,被赋值的变量也会做相同的改变a = [0, 1, 2]b = aa.append(3)>>> a = [0, 1, 2, 3]>>> b = [0, 1, 2, 3]二 copy浅拷贝浅拷贝,只拷贝最外层的列表,原始列表的子列表改变,被复制的变量的子列表也改变import copyalist = [0, 1, 2, [3, 4]]temp1 = copy.copy(alist)alist.原创 2020-05-17 13:18:05 · 215 阅读 · 0 评论 -
python效率提升模块(一)
一 heapq模块该模块提供了堆排序算法的实现1 创建堆和排序(1) heapq.heappush()(2) heap.heapify(list)2 排序(1) [heapq.heappop(heap) for _ in range(len(nums))](2) num1 = sorted(num1); num2 = sorted(num2)res = heapq.merge(num1, num2)3 返回最小值heapq.heappop(nums)4 删除堆中最小元素并加入一个元素原创 2020-05-16 21:14:53 · 383 阅读 · 1 评论 -
python中的GIL-全局解释器锁
转载:https://www.cnblogs.com/zipxzf/p/11621630.html使用场景:采用多进程还是多线程的方式(多核CPU)要看实际应用场景是:(1)多I/O操作(2)密集计算(循环等操作)如果是多IO,单核多线程效率更高如果是密集计算,使用多进程临界资源因为多个线程可以共享进程的内存空间,因此要实现多个线程间的通信相对简单,大家能想到的最直接的办法就是设置一个全局变量,多个线程共享这个全局变量即可。但是当多个线程共享同一个变量(我们通常称之为“资源”)的时候,很有原创 2020-05-15 09:40:57 · 203 阅读 · 0 评论 -
Python中的异常处理
参考文章https://segmentfault.com/a/1190000007736783转载 2020-05-14 14:58:30 · 192 阅读 · 0 评论 -
Python面性对象编程理解
面向对象编程一 装饰器1 @property装饰器之前我们讨论过Python中属性和方法访问权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效。我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,那么如果想访问属性可以通过属性的getter(访问器)和setter(修改器)方法进行对应的操作。如果要做到这点,就可以考虑使用@property包装器来包装getter和setter方法原创 2020-05-13 20:55:56 · 181 阅读 · 0 评论 -
“啃”基础算法-排序算法: 选择排序
算法复杂度和稳定性速查表又慢又不稳定!!!版本一(Cost time:6.77)import time'''每次遍历数组,选择最小值添加到新列表,并在原列表中删除本次遍历最小值'''def select_sort1(alist): new_list = [] while len(alist) > 0: # 遍历到最后一个数 min_value...原创 2020-04-23 20:39:59 · 121 阅读 · 0 评论 -
饭店流量预测-多表关联+lightgbm
几点思考:1、对pandas的使用就像是操作SQL语句, 总体说是增删改查, 但是涉及到联表, 涉及到分组,涉及到不同数据类型的操作,就有很多tricks在里面, 这些tricks是需要在不断的学习->使用中不断精进和掌握;2、特征中包含datetime类型特征的时候, 可以依此分组构造新的时序特征,(1) 是否是周末?(2) 是一个月的第几天?(3) 趋势特征(4) 其他3、...原创 2020-03-26 12:51:31 · 1698 阅读 · 4 评论 -
模型选择与参数寻优
文章知识点一、解决数据量大, 读取操作数据慢的问题二、线性模型分析三、交叉验证概念四、绘制拟合曲线五、线性模型 & 嵌入式特征选择六、模型调参1、贪心算法2、网格搜索3、贝叶斯调参一、解决数据量大, 读取操作数据慢的问题reduce_mem_usage 函数通过调整数据类型,帮助我们减少数据在内存中占用的空间, 在未调整之前, 特征的数据类型固定为int16, float32, obj...原创 2020-03-24 15:42:05 · 1543 阅读 · 0 评论 -
特征工程-决定了结果的上限
一、异常值处理# 箱线图(3-Sigma)删除异常值def outliers_proc(data, col_name, scale=3): """ 用于清洗异常值,默认用 box_plot_outliers(scale=3)进行清洗 :param data: 接收 pandas 数据格式 :param col_name: pandas 列名 :param...原创 2020-03-24 09:33:55 · 487 阅读 · 0 评论 -
pandas数据分析使用技巧
1、被下单数最多商品(item)是什么c = chipo[['item_name','quantity']].groupby(['item_name'],as_index=False).agg({'quantity':sum})c.sort_values(['quantity'],ascending=False,inplace=True)c.head()2、在item_name这一列中,...原创 2020-03-05 15:56:38 · 1287 阅读 · 0 评论