- 博客(124)
- 收藏
- 关注
原创 特征工程之数据预处理
在实际工作中获取到的数据往往不那么理想,可能会存在非数值类型的文本数据、重复值、缺失值、异常值及数据分布不均衡等问题,因此,在进行数学建模前还需要对这些问题进行处理,这项工作称为特征工程。特征工程通常分为特征使用方案、特征获取方案、特征处理、特征监控几大部分,其中特征处理是特征工程的核心内容,有时称为数据预处理。...
2022-05-06 18:04:43
5680
4
原创 XGBoost模型及LightGBM模型案例(Python)
XGBoost算法原理参考其他详细博客以及官方文档LightGBM算法原理参考其他详细博客以及官方文档这里介绍两个算法的简单案例应用。1 XGBoosting案例:金融反欺诈模型信用卡盗刷一般发生在持卡人信息被不法分子窃取后复制卡片进行消费或信用卡被他人冒领后激活并消费等情况下。一旦发生信用卡盗刷,持卡人和银行都会遭受一定的经济损失。因此,通过大数据技术搭建金融反欺诈模型对银行来说尤为重要。1.1模型搭建1.1.1读取数据通过如下代码读取1000条客户信用卡的交易数据。特..
2022-04-29 14:47:41
13577
5
原创 GBDT模型及案例(Python)
目录1 GBDT算法核心思想2 GBDT算法的数学原理3 GBDT算法数学原理举例补充知识点:梯度提升树中梯度的理解4 使用sklearn实现GBDT算法5案例:产品定价模型5.1模型搭建5.1.1读取数据5.1.2分类型文本变量的处理5.1.3提取特征变量和目标变量5.1.4划分训练集的测试集5.1.5模型训练及搭建5.2模型预测及评估6模型参数介绍参考书籍1 GBDT算法核心思想GBDT是Gradient Boosti...
2022-04-28 15:34:27
9064
10
原创 AdaBoost模型及案例(Python)
1 Adaboost算法核心思想AdaBoost算法(Adaptive Boosting)是一种有效而实用的Boosting算法,它以一种高度自适应的方式按顺序训练弱学习器。针对分类问题,AdaBoost算法根据前一次的分类效果调整数据的权重,在上一个弱学习器中分类错误的样本的权重会在下一个弱学习器中增加,分类正确的样本的权重则相应减少,并且在每一轮迭代时会向模型加入一个新的弱学习器。不断重复调整权重和训练弱学习器,直到误分类数低于预设值或迭代次数达到指定最大值,最终得到一个强学习器。简单来说,
2022-04-25 16:19:52
7078
3
原创 随机森林模型及案例(Python)
1 集成模型简介集成学习模型使用一系列弱学习器(也称为基础模型或基模型)进行学习,并将各个弱学习器的结果进行整合,从而获得比单个学习器更好的学习效果。集成学习模型的常见算法有Bagging算法和Boosting算法两种。Bagging算法的典型机器学习模型为随机森林模型,而Boosting算法的典型机器学习模型则为AdaBoost、GBDT、XGBoost和LightGBM模型。1.1 Bagging算法简介Bagging算法的原理类似投票,每个弱学习器都有一票,最终根据所有弱学习器的投
2022-04-21 17:37:23
46478
8
原创 K近邻算法(KNN)及案例(Python)
1 算法简介K近邻算法(英文为K-Nearest Neighbor,因而又简称KNN算法)是非常经典的机器学习算法。K近邻算法的原理非常简单:对于一个新样本,K近邻算法的目的就是在已有数据中寻找与它最相似的K个数据,或者说“离它最近”的K个数据,如果这K个数据大多数属于某个类别,则该样本也属于这个类别。(K的含义)以下图为例,假设五角星代表爱情片,三角形代表科幻片。此时加入一个新样本正方形,需要判断其类别。当选择以离新样本最近的3个近邻点(K=3)为判断依据时,这3个点由1个五角星和2个三角形
2022-04-19 11:52:20
22052
25
原创 朴素贝叶斯模型及案例(Python)
1 朴素贝叶斯的算法原理贝叶斯分类是机器学习中应用极为广泛的分类算法之一。朴素贝叶斯是贝叶斯模型当中最简单的一种,其算法核心为如下所示的贝叶斯公式。其中P(A)为事件A发生的概率,P(B)为事件B发生的概率,P(A|B)表示在事件B发生的条件下事件A发生的概率,同理P(B|A)则表示在事件A发生的条件下事件B发生的概率。举一个简单的例子:已知冬季一个人感冒(事件A)的概率P(A)为40%,一个人打喷嚏(事件B)的概率P(B)为80%,一个人感冒时打喷嚏的概率P(B|A)为100%,
2022-04-15 16:00:19
24974
14
原创 决策树模型及案例(Python)
目录1 决策树模型简介2 Gini系数(CART决策树)3信息熵、信息增益4决策树模型代码实现4.1分类决策树模型(DecisionTreeClassifier)4.2回归决策树模型(DecisionTreeRegressor)5案例:员工离职预测模型5.1模型搭建5.1.1数据读取与预处理5.1.2提取特征变量和目标变量5.1.3划分训练集与测试集5.1.4模型搭建及训练5.1.5代码汇总5.2模型预测及评估5.2.1直...
2022-04-14 20:09:40
91502
47
原创 逻辑回归模型及案例(Python)
1 简介逻辑回归也被称为广义线性回归模型,它与线性回归模型的形式基本上相同,最大的区别就在于它们的因变量不同,如果是连续的,就是多重线性回归;如果是二项分布,就是Logistic回归。Logistic回归虽然名字里带“回归”,但它实际上是一种分类方法,主要用于二分类问题(即输出只有两种,分别代表两个类别),也可以处理多分类问题。线性回归是用来预测连续变量的,其取值范围(-∞,+∞),而逻辑回归模型是用于预测类别的,例如,用逻辑回归模型预测某物品是属于A类还是B类,在本质上预测的是该物品属于A类或
2022-04-12 17:39:18
60803
27
原创 多元线性回归及案例(Python)
目录1 多元线性回归简介2 案例:客户价值预测模型2.1 案例背景2.2具体代码3模型评估参考书籍1 多元线性回归简介多元线性回归模型可以表示为如下所示的公式。其中x1、x2、x3……为不同的特征变量,k1、k2、k3……则为这些特征变量前的系数,k0为常数项。2 案例:客户价值预测模型利用多元线性回归模型可以根据多个因素来预测客户价值,当模型搭建完成后,便可对不同价值的客户采用不同的业务策略。2.1 案例背景这里以信用卡客户的客户价值为例来解..
2022-04-11 17:59:57
31474
5
原创 一元线性回归及案例(Python)
目录1 一元线性回归简介2 一元线性回归数学形式3案例:不同行业工龄与薪水的线性回归模型3.1案例背景3.2具体代码3.3模型优化4总体展示5线性回归模型评估6模型评估的数学原理6.1 R-squared6.2Adj.R-squared6.3 P值参考书籍1 一元线性回归简介线性回归模型是利用线性拟合的方式探寻数据背后的规律。如下图所示,先通过搭建线性回归模型寻找这些散点(也称样本点)背后的趋势线(也称回归曲线),再利用回归曲线进行...
2022-04-11 17:22:28
47190
19
原创 Python绘制股票K线图
目录1 股票K线图知识了解2用Python绘制股票K线图2.1安装绘制K线图的mpl_finance库2.2引入相关库2.3用Tushare库获取股票基本数据2.4日期格式调整及表格转换2.5绘制K线图2.6添加均线图2.7添加每日成交量柱形图1 股票K线图知识了解下图所示为“贵州茅台”股票的日线级别的K线图:K线图中的柱形通常称为“K线”,因为形似蜡烛,所以也称为蜡烛图。K线是根据股票的4个价格绘制的:开盘价(...
2022-04-09 15:38:54
18198
11
原创 O2O优惠券线下使用情况数据分析(Python)
1 项目背景随着移动设备的完善和普及,移动互联网+各行各业进入了高速发展阶段,这其中以O2O(Online to Offline)消费最为吸引眼球。据不完全统计,O20行业估值上亿的创业公司至少有10家,也不乏百亿巨头的身影。O2O行业关联数亿消费者,各类APP每天记录了超过百亿条用户行为和位置记录,因而成为大数据科研和商业化运营的最佳结合点之一。以优惠券盘活老用户或吸引新客户进店消费是O2O的一种重要营销方式。然而随机投放的优惠券对多数用户造成无意义的干扰。对商家而言,滥发的优惠券可能降低品牌声誉
2022-04-08 21:23:09
2790
1
原创 餐厅订单数据分析
import numpy as npimport pandas as pdimport matplotlib.pyplot as plt#数据加载data1 = pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail1')data2 = pd.read_excel('meal_order_detail.xlsx',sheet_name='meal_order_detail2')data3 = pd.read_e.
2022-04-06 16:07:14
1471
原创 电商销售数据分析(Python)
目录1.背景2.分析目标3.数据准备4.数据清洗4.1查看是否含有缺失值4.2查看是否有异常值4.3数据整理5.具体目标分析5.1分析每年销售额的增长率5.2各个地区分店的销售额5.3销售淡旺季分析5.4新老客户数5.5用户价值度RFM模型分析6.案例结论6.1结论依据6.2案例结论1.背景随着电商的不断发展,网上购物变得越来越流行。更多电商平台崛起,对于电商卖家来说增加的不只是人们越来越高的需求,还要面对更多强大...
2022-04-04 15:42:37
28849
4
转载 matplotplib基本绘图(数据分析)
import matplotlib.pyplot as pltimport pandas as pdimport numpy as np# 设置显示中文plt.rcParams['font.sans-serif'] = ['KaiTi']plt.rcParams['axes.unicode_minus'] = False
2022-03-31 17:09:16
426
原创 高阶pandas(数据分析)
第12章 高阶pandas12.1 分类数据本节介绍pandas的Categorical类型。12.1.1 背景和目标一个列经常会包含重复值,这些重复值是一个小型的不同值的集合。我们已经看见向unique和value_counts这样的函数,它们允许我们从一个数组中提取不同值并分别计算这些不同值的频率:许多数据系统(用于数据入库、统计计算或其他用途)已经开发出专门的方法,用重复的值来表示数据,以便更有效地存储和计算。在数据入库的操作中,使用所谓的维度表是一种最佳实践,维度表包含了
2022-03-29 21:07:09
1997
原创 时间序列(数据分析)
第11章 时间序列时间序列数据在很多领域都是重要的结构化数据形式,例如金融、经济、生态学、神经科学和物理学。在多个时间点观测或测量的数据形成了时间序列。许多时间序列是固定频率的,也就是说数据是根据相同的规则定期出现的,例如每15秒、每5分钟或每月1次。时间序列也可以是不规则的,没有固定的时间单位或单位间的偏移量。最简单和最广泛使用的时间序列是那些由时间戳索引的。11.1 日期和时间数据的类型及工具Python标准库包含了日期和时间数据的类型,也包括日历相关的功能。dateti
2022-03-28 17:00:20
18285
1
原创 数据聚合与分组操作(数据分析)
第10章 数据聚合与分组操作对数据集进行分类,并在每一组上应用一个聚合函数或转换函数,这通常是数据分析工作流中的一个重要部分。在载入、合并、准备数据集之后,你可能需要计算分组统计或者数据透视表用于报告或可视化的目的。pandas提供一个灵活的groupby接口,允许你以一种自然的方式对数据集进行切片、切块和总结。在本章,你将学习如何:·使用一个或多个键(以函数、数组或DataFrame列名的形式)将pandas对象拆分为多块· 计算组汇总统计信息,如计数、...
2022-03-25 13:46:47
7604
原创 绘图与可视化(数据分析)
第9章 绘图与可视化9.1 简明matplotlib API入门导包:import matplotlib.pyplot as plt9.1.1 图片与子图matplotlib所绘制的图位于图片(Figure)对象中。可以使用plt.figure生成一个新的图片:不能使用空白的图片进行绘图。需要使用add_subplot创建一个或多个子图(subplot):ax1 = fig.add_subplot(2,2,1)上面代码的意思是图片应该是2×2的(最多四个图形)
2022-03-22 20:48:36
1129
原创 数据规整:连接、联合与重塑(数据分析)
第8章 数据规整:连接、联合与重塑8.1 分层索引分层索引是pandas的重要特性,允许你在一个轴向上拥有多个(两个或两个以上)索引层级。笼统地说,分层索引提供了一种在更低维度的形式中处理更高维度数据的方式。以一个简单的例子开始,先创建一个Series,以列表的列表(或数组)作为索引:看到的是一个以MultiIndex作为索引的Series的美化视图。索引中的“间隙”表示“直接使用上面的标签”:通过分层索引对象,也可以称为部分索引,允许你简洁地选择出数据的子集:
2022-03-18 15:27:14
3766
1
原创 数据清洗与准备 (数据分析)
第7章 数据清洗与准备7.1处理缺失值对于数值型数据,pandas使用浮点值NaN(Not a Number来表示缺失值)。我们称NaN为容易检测到的标识值:在pandas中,我们采用了R语言中的编程惯例,将缺失值成为NA,意思是not available(不可用)。在统计学应用中,NA数据可以是不存在的数据或者是存在但不可观察的数据(例如在数据收集过程中出现了问题)。当清洗数据用于分析时,对缺失数据本身进行分析以确定数据收集问题或数据丢失导致的数据偏差通常很重要。Python.
2022-03-17 09:57:45
4867
原创 数据载入、存储及文件格式(数据分析)
第6章 数据载入、存储及文件格式输入和输出通常有以下几种类型:· 读取文本文件及硬盘上其他更高效的格式文件;·从数据库载入数据;·与网络资源进行交互(比如Web API)。6.1 文本格式数据的读写将表格型数据读取为DataFrame对象是pandas的重要特性。如下是pandas的解析函数:使用read_csv将一个csv文件读入一个DataFrame:如果原csv文件以逗号分隔,那么也可以使用read_table,并指定分隔符:pd.read_tab
2022-03-15 10:54:28
3467
原创 Numpy、pandas基础(数据分析)
第4章.Numpy基础:数组与向量化计算对于大多的数据分析应用,本书作者主要关注的内容为: ·在数据处理、清洗、构造子集、过滤、变换以及其他计算中进行快速的向量化计算。 ·常见的数组算法,如sort、unique以及set操作等。 ·高效的描述性统计和聚合/概述数据。 ·数据排列和相关数据操作,例如对异构数据进行merge和join。 ·使用数组表达式来表明条件逻辑,代替if-elif-else条件分支的循环。...
2022-03-07 11:55:44
2248
1
原创 Python实现二叉树定义、层次、先序、中序、后序遍历
class Node(object): """定义树节点""" def __init__(self,item): self.elem = item self.left = None self.right = Noneclass Tree(object): def __init__(self): self.root = None def add(self,item): .
2022-03-03 10:03:00
553
原创 Python实现二分查找(递归与非递归)
#二分查找时间复杂度最好为O(1),最坏为O(logn)def binary_search(alist, item): """递归实现二分查找""" n = len(alist) if n > 0: mid = n // 2 if alist[mid] == item: return True elif alist[mid] > item: return binary_se.
2022-03-03 09:53:51
992
原创 Python实现快速排序算法
def quick_sort(alist, first, last): if first >= last: return mid_value = alist[first] low = first high = last while low < high: while low < high and alist[high] >= mid_value: high -= 1 al.
2022-02-28 14:32:23
501
原创 Python实现希尔排序算法
def shell_sort(alist): """希尔排序又叫缩小增量排序,是插入排序的一种""" n = len(alist) gap = n // 2 while gap > 0 : for j in range(gap,n): i = j while i > 0 : if alist[i] < alist[i-gap] : .
2022-02-28 11:14:09
489
原创 Python实现冒泡排序算法
def bubble_sort(alist): n = len(alist) for j in range(n-1): for i in range(n-j-1): if alist[i] > alist[i+1]: alist[i] , alist[i+1] = alist[i+1] , alist[i]alist = [54,26,17,29,66]print(alist)bubble_sort(ali.
2022-02-28 10:10:57
414
原创 Python实现插入排序算法
def insert_sort(alist): n = len(alist) for j in range(1,n): i = j while i > 0: if alist[i] < alist[i-1]: alist[i] , alist[i-1] = alist[i-1] , alist[i] i -= 1 else: .
2022-02-28 09:57:53
509
原创 Python实现选择排序算法
def select_sort(alist): n = len(alist) #外层循环控制第几次选择排序的过程,一共要进行n-1次,从第二个元素开始进行操作,默认第一个元素已经有序 for j in range(n-1): min_index = j #内层循环寻找该轮选择排序过程中最小或最大的元素索引 for i in range(j+1,n): if alist[min_index] > alis.
2022-02-28 09:57:07
898
原创 Python实现单向循环链表
#单向循环链表定义#定义节点同单链表class Node(object): def __init__(self,elem): self.elem = elem self.next = Noneclass singleCycleLinkList(object): def __init__(self,node=None): self.__head = node if node : nod.
2022-02-24 11:41:31
542
原创 Python实现单链表
class Node(object): """定义节点""" def __init__(self,elem): self.elem = elem #节点数值 self.next = None #节点的指针class SingleLinkList(object): """定义单链表""" def __init__(self,node=None): """头结点初始化""" self.
2022-02-24 11:06:36
551
原创 【LeetCode】Day52
2047.句子中的有效单词数句子仅由小写字母('a' 到 'z')、数字('0' 到 '9')、连字符('-')、标点符号('!'、'.' 和 ',')以及空格(' ')组成。每个句子可以根据空格分解成 一个或者多个 token ,这些 token 之间由一个或者多个空格 ' ' 分隔。如果一个 token 同时满足下述条件,则认为这个 token 是一个有效单词:仅由小写字母、连字符和/或标点(不含数字)。至多一个 连字符 '-' 。如果存在,连字符两侧应当都存在小写字母("a-b" 是一
2022-01-27 14:58:32
168
原创 【LeetCode】Day51
【LeetCode】Day51-2013.检测正方形100.相同的树给你两棵二叉树的根节点p和q,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。解法①:深度优先搜索DFS# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self....
2022-01-26 15:03:27
5757
原创 【LeetCode】Day50
【LeetCode】Day45-2029.石子游戏IX【LeetCode】Day46-1345.跳跃游戏IV【LeetCode】Day47-1332.删除回文子序列【LeetCode】Day48-2034.股票价格波动【LeetCode】Day49-2045.到达目的地第二最短时间1688.比赛中的配对次数给你一个整数 n ,表示比赛中的队伍数。比赛遵循一种独特的赛制:如果当前队伍数是 偶数 ,那么每支队伍都会与另一支队伍配对。总共进行 n / 2 场比赛,且产生 n / 2
2022-01-25 21:11:40
7090
原创 Python实现图(Graph)及其算法(BFS)
注:参考书籍《Python数据结构与算法》1.图的抽象数据类型定义Graph()新建一个空图;addVertex(vert)向图中添加一个顶点(vert)实例;addEdge(fromVert,toVert)向图中添加一条有向边,用于连接顶点fromVert,toVertaddEdge(fromVert,toVert,weight)向图中添加一条带权重(weight)的有向边getVertex(vertKey)在图中找到名为vertKey的顶点getVertices()以列表形
2022-01-24 14:58:48
11976
5
原创 【LeetCode】Day44
【LeetCode】Day44-219.存在重复元素给你一个整数数组nums 和一个整数k ,判断数组中是否存在两个 不同的索引i和j ,满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在,返回 true ;否则,返回 false 。解法①:直接法,超出时间限制class Solution: def containsNearbyDuplicate(self, nums: List[int], k: int) -> b...
2022-01-19 09:46:03
5646
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人