求历史数据中最近的K个数的最大值

K-Means 聚类:客户价值分析 1 背景与挖掘目标1.1 背景1、航空公司业务竞争激烈,企业营销焦点从产品中心转为客户中心;2、针对不同类型客户,进行精准营销,实现利润最大化;3、建立合理的客户价值评估模型,进行客户分类,是解决问题的关键。1.2 挖掘目标1、借助航空公司客户数据,对客户进行分类;2、对不同的客户类别进行特征分析,比较不同类客户的客户价值;3、对不同价值的客户类别提供个性化服务,制定相应的营销策略。2 分析方法与... 阅读详情

对于一个数组,求解位置iii之前的kkk个(包括当前位置)数中的最大数。

最直接的方法就是针对当前位置往前搜索比较k-1个数,得到最大的那个数。该方法的时间复杂度为O(N∗K)O(N*K)O(N∗K)。能否在O(N)O(N)O(N)的时间复杂度中求解呢?

当然是可以的,我们只需要记住历史K中的最大与第二大的数以及这两个数的生命周期,然后通过不停地前移,我们不停更新这个两个数就可。【这便是思路了】

特别的,针对已知的数组,我们可以通过记录历史的第一、第二大数的位置坐标,即可通过计算得到它们的生命周期以及值。

下面是代码:

def maxWindow(arr, k):
    from collections import deque
    queue = deque()
    i = 0
    result = [0] * len(arr)
    while i < len(arr):
        if len(queue) > 0 and i - queue[0] >= 3:
            queue.popleft()
        if len(queue) == 0:
            queue.append(i)
        elif len(queue) == 1:
            if arr[queue[-1]] <= arr[i]:
                queue.pop()
            queue.append(i)
        else:
            while len(queue) > 0 and arr[queue[-1]] <= arr[i]:
                queue.pop()
            queue.append(i)
        result[i] = arr[queue[0]]
        i += 1
    return result

那么,针对流式数据应该如何处理呢?同样采取以上方法即可。

显然,通过记录位置下标的方法不可用了。那么我们只有记录并更新历史k中最大两个数的生命周期了。

代码如下:

class MaxWindow:
    def __init__(self, k):
        self.k = k
        self.a, self.b = None, None
        self.a_life, self.b_life = 0, 0

    def max(self, num):
        if self.a_life >= self.k:
            self.a, self.b = self.b, None
            self.a_life, self.b_life = self.b_life, 0
        if self.a is None:
            self.a = num
            self.a_life += 1
        elif self.b is None:
            if self.a <= num:
                self.a = num
                self.a_life = 1
            else:
                self.b = num
                self.a_life += 1
                self.b_life = 1
        else:
            if self.a <= num:
                self.a, self.b = num, None
                self.a_life, self.b_life = 1, 0
            elif self.b <= num:
                self.b = num
                self.a_life += 1
                self.b_life = 1
            else:
                self.a_life += 1
                self.b_life += 1
        return self.a

t = MaxWindow(3)
for num in [1, 3, 2, 5, 4, 6, 7, 2, 1, 2, 3]:
    print(t.max(num))
航空公司客户价值分析——K-Means 背景与挖掘目标 背景: 信息时代的来临使得企业营销焦点从产品中心变为客户中心 针对不同类型的客户,进行精准营销,实现企业利润最大化 准确分类是企业优化营销资源分配的重要依据 目标: 借助航空公司客户数据,对客户进行分类 对不同的客户类别进行特征分析,比较不同类客户的客户价值 对不同价值的客户类别提供个性化服务,制定相应的营销策略 分析方法与过程 本案例目标是客户价值识别,即通过... 阅读详情

相关推荐

股票技术指标atr是什么含义_股票技术指标公式详解K线图分析

量化分析海龟训练营学员:常常能听到一些技术指标,比如MACD、均线以及ATR等等,ATR与前面两个技术指标的逻辑相同吗? 同济桥博士:ATR的逻辑跟我们之前看到的MACD、均线这些指标是不一样的。 这里要详细的说一下,它求的是什么值。ATR是求三个数值里面的最大值。哪三个数值呢?一个是最高价减去最低价之间的差。这是什么意思?比如说我们拿最近的一天的K线来看,K线最上面是最高价,最下面是最低价,这之间的差就是这第一个值。第二个是前一天的收盘价减去最高价,第三个是前一天的收盘价减去最低价。 量化分析.

QMACD_QUANT的博客 2945

根据现有历史数据预测未来数值-算法

算法-预测未来一周8.8日-8.15日数值,取上周数据8.1日-8.7日值并求出临近两天的绝对值差额

leaning_java的博客 2358

第7章 航空公司客户价值分析

7.1 背景与挖掘目标 #mermaid-svg-pSOZht4gcYalVLS4 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-pSOZht4gcYalVLS4 .label text{fill:#333}#mermaid-svg-pSOZht4gcYalVLS4 .node rect,#mermaid-s.

qq_42720463的博客 6619

k最邻近算法

一、简介 k-近邻算法称为kNN,它的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似数据(最近邻)的分类标签。一般来说,我们只选择样本数据集中前κ个最相似的数据,这就是k-近邻算法中κ的出处。通常κ是不大于2...

星空 792

从蓝桥杯ALGO-49题解析寻找数组最大值:算法思维与多语言实现

在计算机科学中,数组遍历是数据处理的基础操作,其核心原理是通过线性扫描逐个访问元素,高效完成信息检索与聚合。这种线性扫描与状态维护的技术范式,是实现数据统计、系统监控和实时分析的关键,具有极高的工程实践价值。无论是数据分析中的最大值统计,还是系统监控中的峰值检测,都离不开对最值查找算法的深入理解。本文以蓝桥杯ALGO-49题为切入点,结合**算法思维**和**多语言实现**,详细拆解了寻找数组最大值及其首次出现位置的标准化流程,并探讨了从基础遍历到高级变体(如同时查找最大最小值、寻找第K大元素)的思维拓展,

weixin_30847865的博客 483

【数据挖掘实战】——航空公司客户价值分析(K-Means聚类案例)

在企业的客户关系管理中,对客户分类,区分不同价值的客户。针对不同价值的客户提供个性化服务方案,采取不同营销策略,将有限营销资源集中于高价值客户,实现企业利润最大化目标。 在竞争激烈的航空市场里,很多航空公司都推出了优惠的营销方式来吸引更多的客户。在此种环境下,如何将公司有限的资源充分利用,提示企业竞争力,为企业带来更多的利益。

lingxw的博客 6538

找到k个最接近x的元素

给定一个排序好的数组,两个整数 k 和 x,从数组中找到最靠近 x(两数之差最小)的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样,优先选择数值较小的那个数。 链接:https://leetcode-cn.com/problems/find-k-closest-elements 思路 : 建立大根堆(修改比较器规则:与x的差值的大根堆) 每次放入元素进行比较:与x的差值的结果进行比较 小于则 堆poll 堆offer(新元素) 最后大根堆放入的是差值最小的k个元素,再转为小根堆

qq_27555691的博客 491

Unity UGUI高斯模糊背景效果 简易解决方案

UnityUI背景模糊效果简易解决方案1.功能描述简易界面框架搭建合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 1.功能描述 在我们玩游戏的时候,经常会看到一些游戏会对UI做这样的处理: 可以看到,新开的上层UI界面会以下层UI界面的模糊

SaberZG的博客 1万+

2021-3-13-找离x最近的k个数

题目描述: 给定一个排序好的数组,两个整数 k 和 x, 从数组中找到最靠近 x(两数之差最小)的 k 个数。 返回的结果必须要是按升序排好的。 如果有两个数与 x 的差值一样,优先选择数值较小的那个数。 输入描述: 第一行为排序好的数组arr 第二行为查找的个数k 第三行为基准值x 输出描述: 按升序排好的的数组 例如: 输入 1,2,3,4,5 4 3 #include <vector> #include <iostream> #include <string> us

qq_35927741的博客 298

Linux系统centos7安装网卡驱动

有时候我们装完Centos或Ubuntu系统会发现没有网卡信息,说明网卡驱动不配置,所以我们要重新安装。 首先去服务器主板官网下载网卡驱动,注意32位和64位。 先查看网卡型号 lspci | grep -i ethernet 我的网卡型号是 00:1f.6 Ethernet controller: Intel Corporation Device 0d55。 网上一找,压根没找到这型号的网卡,别说驱动了。怀着试一试的心态,就安装i219-v系的网卡驱动,还别说,成功了。 针对i21...

wshc18的博客 2万+

汇川H5U搭配步进伺服电机使用CANopen通讯控制电机案例

摘要:本文介绍了基于汇川H5U PLC和STM4260B-CANopen-M步进伺服电机的控制系统搭建流程。主要内容包括:硬件准备(PLC、伺服电机、24V电源)、电机参数默认设置(地址1号、1M波特率)、使用AutoShop软件编写程序(配置CANopen参数、导入电机描述文件、设置PDO参数)以及功能块编程(使能控制、速度控制、绝对位置控制等)。通过查阅通讯手册完成各功能块参数配置,最终在主程序中调用功能块实现控制系统开发。该方案适用于需要精确运动控制的工业自动化场景。

m0_46512607的博客 1596

在排序数组中找最接近的K个数

给一个目标数target, 一个非负整数k, 一个按照升序排列的数组A。在A中找与target最接近的k个整数。返回这k个数并按照与target的接近程度从小到大排序,如果接近程度相当,那么小的数排在前面。 样例 样例 1: 输入: A = [1, 2, 3], target = 2, k = 3 输出: [2, 1, 3] 样例 2: 输入: A = [1, 4, 6, 8...

weixin_41791402的博客 1501

嵌入式:简单的service框架

在嵌入式中,我们获取一个资源、设置一个变量、更新数据的话最直接的方式就是直接调用一个函数。这样的写法也可以满足基本的功能,前提是这个系统是只要一个任务,只有一个while(1)如图1.1。图1.1当有两个或者两个以上的任务的时候,同时调用一个函数(设置一个状态值、操作同一个资源、操作指针等行为)的流程如图1.2。图1.2当两个任务同时操作一个资源的时候,就会有重入的问题,会导致想不到的异常问题(数据不对、指针异常等)。

stupid的博客 986

新浪股票接口获取历史数据

这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用,因为新浪没有公开关于其接口的官方文档,所以通过各种百度差了很多关于新浪股票接口的使用,不过大家基本都是转载或者直接复制,对于实时数据的获取讲的很详细,但是缺少获取历史数据的方法。 关于实时数据的获取大家可以看这篇博客:实时股票数据接口&nbsp; 经过不懈的努力终于再这篇博文中找到了关于新浪股票历史数据的获取方式腾讯股票接口、和讯网股票...

NBA_1的博客 9564

RK3568(buildroot)利用squashfs+overlay实现嵌入式系统高可靠存储方案

本文详细介绍了在RK3568嵌入式平台上,基于Buildroot系统,利用squashfs只读根文件系统与overlayfs可写层相结合的高可靠存储方案。该方案能有效防止设备意外断电导致的系统文件损坏,通过内核配置、启动脚本编写及镜像制作,实现系统核心的只读保护与用户数据的持久化分离,显著提升嵌入式设备的现场稳定性。

weixin_29189381的博客 548

【WiFi】T830 MT7992 WMM测试修改操作说明

WiFi WMM(Wi-Fi Multimedia)是Wi-Fi联盟推出的一项技术,用于优化无线网络中的多媒体内容传输。WMM通过优先处理不同类型的数据流来改善网络性能,特别是在网络拥堵时。:WMM通过提供服务质量支持,确保语音、视频和其他多媒体应用在无线网络中获得优先处理。这有助于减少延迟和抖动,改善用户体验。:WMM将数据流分为四个优先级队列:语音、视频、最佳效果(Best Effort)和背景(Background)。语音和视频流通常被赋予更高的优先级,以确保它们在网络中得到及时传输。

wgl307293845的博客 1018

php 股票历史api接口,新浪股票接口获取历史数据

新浪股票接口获取历史数据发布时间:2018-04-23 17:23,浏览次数:1172这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用,因为新浪没有公开关于其接口的官方文档,所以通过各种百度差了很多关于新浪股票接口的使用,不过大家基本都是转载或者直接复制,对于实时数据的获取讲的很详细,但是缺少获取历史数据的方法。关于实时数据的获取大家可以看这篇博客:实时股票数据接口经过不懈的努力终于再...

weixin_35706991的博客 1770

1、vectorCast单元测试常用操作

进入软件主页面,点击file,选择set working directory,随便选择一个保存该项目的目录即可。

weixin_59334478的博客 2156

kmeans算法中的sse_k-means聚类算法原理与参数调优详解

k-means算法原理K-means中心思想:事先确定常数K,常数K意味着最终的聚类类别数,首先随机选定初始点为质心,并通过计算每一个样本与质心之间的相似度(这里为欧式距离),将样本点归到最相似的类中,接着,重新计算每个类的质心(即为类中心),重复这样的过程,直到质心不再改变,最终就确定了每个样本所属的类别以及每个类的质心。由于每次都要计算所有的样本与每一个质心之间的相似度,故在大规模的数据集上,...

weixin_30674431的博客 2972

UWB:FiRa Consortium UCI Generic Technical Specification v1.1.0(1)- UCI架构和通用数据包头

如果大家学习过WiFi的SPEC,比如从我的资源里面下载 IEEE 802.11-2007,应该很容易发现,FiRa的spec定义实在是太差了。有现成的好例子不学,非得自己来一套,搞一堆新的名词,其实都是一个意思。比如GID,OID等,而且GID、OID是最先出现的,但是对应表格 还得去附件的最后一项去找。 FiRa是UWB联盟,希望跟WIFi联盟学习一下,把UWB做大做强,而不是自成一派,自命不凡。

Ankie资深技术项目经理 2434

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python -- K最近邻算法

KNN核心算法函数#! /usr/bin/env python3 # -*- coding: utf-8 -*- # fileName : KNNdistance.py # author : zoujiameng@aliyun.com.cnimport mathdef getMaxLocate(target): # 查找target中最大值的locate maxValue = float("

shentong1的专栏 1648

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

机器学习之聚类(K-means)

机器学习之K-MEANS目录什么是K-means? 目录 无论才能知识多么卓著,如果缺乏热情,则无异纸上画饼充饥,无补于事。 什么是K-means?

在人生的舞台上,从不给落伍者颁发奖牌! 1129

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

K近邻算法

KNN(K-Nearest Neighbors)算法是一种简单直观的监督学习算法,核心思想是“物以类聚”——通过计算待分类样本与训练集中所有样本的距离,选取最近的K个样本,以这K个样本的多数类别作为预测结果。X_test: 测试特征矩阵(n_test_samples, n_features)X_test: 测试特征矩阵(n_test_samples, n_features)X_test: 测试特征矩阵(n_test_samples, n_features)

2501_93459991的博客 301

K邻近(KNN)分类和预测算法的原理及实现

2016年4月13日 BY 蓝鲸 LEAVE A COMMENT K邻近算法(k-NearestNeighbor)简称KNN,是分类算法中的一种。KNN通过计算新数据与历史样本数据中不同类别数据点间的距离对新数据进行分类。简单来说就是通过与新数据点最邻近的K个数据点来对新数据进行分类和预测。 我们以一个实例来说明KNN算法的原理及实现过程。下图是一组贷款用户还款情况的样本数据,

工作点滴 2万+

机器学习(6)之聚类算法(k-means\Canopy\层次聚类\谱聚类)

文章目录1 聚类的定义1.1 距离公式(相似度)1.2 聚类的思想2 K-means算法2.1 K-means算法的思考2.2 总结3 二分K-Means算法4 K-Means++算法4.1 K-Means||算法5 Canopy算法5.1 应用场景6 Mini Batch K-Means算法7 层次聚类方法7.1 AGNES算法中簇间距离7.2 层次聚类优化算法8 密度聚类8.1 DBSCAN算...

u013788252的博客 1732

腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据

腾讯股票接口: 分时图 http://data.gtimg.cn/flashdata/hushen/minute/sz000001.js?maxage=110&0.28163905744440854 五天分时图 http://data.gtimg.cn/flashdata/hushen/4day/sz/sz000002.js?maxage=43200&visitDstTime=1...

qq_41844747的博客 2715
上一篇: 求数组与下标所能够构成最大面积
下一篇: 有环单链表,求环长、链长;求两链表的交点
Subson
博客等级 码龄12年 31粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值