Hadoop学习笔记二 - kNN算法实现用户风险分类

2023-10-31

在银行这个极其庞杂的交易体系中,每天都能收集到大量的用户信息和用户数据。而伴随着我国利率市场化的不断深化,净利差的迅速收窄,各大银行都希望利用手头的大量用户信息和实时产生的用户数据,对用户进行深度分析挖掘以便进行风险管控和个性化营销,降低银行的运营成本,提升获利空间。本文利用机器学习算法中最简单的kNN算法,也称k-近邻算法,在Hadoop中实现用户的风险等级的分类,以便向用户推荐符合其风险承受能力范围内的产品,也便于对用户进行风险管控。

k-邻近算法的工作原理是:存在一个样本数据集合,也称作训练样本集,并且样本集中每个数据都存在标签,即我们知道样本集中每一数据与所属分类的对应关系。输入没有标签的新数据后,将新数据的每个特征值与样本集中数据对应的特征值进行比较,然后算法提取样本集中特征最相似的数据(最邻近)的分类标签。一般来说,只选择样本数据集中前k个最相似的数据。最后选择k个最相似数据中出现次数最多的分类,作为新数据的分类。在本文要进行的用户风险等级分类中,为简明起见,我们把用户分成三类,风险承受能力低、风险承受能力低中、风险承受能力高。即每个用户都会对应着一个标签,低、中或者高。而对于每个用户,我们将从三个维度进行考察,分别是股票、基金、贵金属投资金额、理财产品投资金额、存款和货币市场投资金额(当然在实际用户风险承受能力的判断中,考虑的因素要比这个多很多,为了简单起见,只考虑用户的三个维度)。下图展示了某几个训练集中的用户数据。

用户 股票、基金及贵金属投资 理财产品投资 存款及货币市场投资 风险分类
1 30000 10000 0 high
2 0 20000 20000 middle
3 0 0 40000 low



我们把一组已知的打好标签的用户数据放到Hadoop的HDFS上,作为训练的样本集,同时把另外一组打好标签的用户数据也放到HDFS上,作为测试数据。在kNN算法中,每一组数据都被看成一个节点,如在我们的客户承受风险分类的案例中,A用户可以表示成(xA0, xA1, xA2),xA0表示股票、基金、贵金属的投资金额,xA1表示理财产品的投资金额,xA2表示存款以及货币市场投资的金额。用户A的节点A(xA0, xA1, xA2)与用户B的节点(xB0, xB1, xB2)之间的距离采用欧式距离公式来计算。

distance=(x
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Hadoop学习笔记二 - kNN算法实现用户风险分类 的相关文章

  • 为什么组合器输入记录的数量比映射的输出数量多?

    Combiner 在 Mapper 之后 Reducer 之前运行 它将接收给定节点上的 Mapper 实例发出的所有数据作为输入 然后它将输出发送到Reducers 因此组合器输入的记录应小于映射输出的记录 12 08 29 13 38
  • 如果 HBase 不是运行在分布式环境中,它还有意义吗?

    我正在构建数据索引 这将需要以形式存储大量三元组 document term weight 我将存储多达几百万个这样的行 目前我正在 MySQL 中将其作为一个简单的表来执行 我将文档和术语标识符存储为字符串值 而不是其他表的外键 我正在重
  • Sqoop mysql错误-通信链路故障

    尝试运行以下命令 sqoop import connect jdbc mysql 3306 home credit risk table bureau target dir home sqoop username root password
  • hive查询无法通过jdbc生成结果集

    我是 Hive 和 Hadoop 的新手 在我的教程中 我想将表创建为 import java sql SQLException import java sql Connection import java sql ResultSet im
  • R+Hadoop:如何从HDFS读取CSV文件并执行mapreduce?

    在以下示例中 small ints to dfs 1 1000 mapreduce input small ints map function k v cbind v v 2 MapReduce函数的数据输入是一个名为small ints的
  • 将日期字符串转换为“MM/DD/YY”格式

    我刚刚看到这个例子 我该如何解决这个问题 Hive 元存储包含一个名为 Problem1 的数据库 其中包含一个名为 customer 的表 customer 表包含 9000 万条客户记录 90 000 000 每条记录都有一个生日字段
  • 如何将Hive数据表迁移到MySql?

    我想知道如何将日期从 Hive 转移到 MySQL 我看过有关如何将 Hive 数据移动到 Amazon DynamoDB 的示例 但没有看到有关如何将 Hive 数据移动到 MySQL 等 RDBMS 的示例 这是我在 DynamoDB
  • 如何在 Hadoop 中将 String 对象转换为 IntWritable 对象

    我想转换String反对IntWritableHadoop 中的对象 任何过程都可以进行转换 IntWritable value new IntWritable Integer parseInt someString 并处理以下可能性par
  • 遍历 ArrayWritable - NoSuchMethodException

    我刚刚开始使用 MapReduce 并且遇到了一个奇怪的错误 我无法通过 Google 回答该错误 我正在使用 ArrayWritable 制作一个基本程序 但是当我运行它时 在Reduce过程中出现以下错误 java lang Runti
  • 带有安全 Kafka 抛出的 Spark 结构化流:无权访问组异常

    为了在我的项目中使用结构化流 我正在 hortonworks 2 6 3 环境上测试 Spark 2 2 0 和 Kafka 0 10 1 与 Kerberos 的集成 我正在运行下面的示例代码来检查集成 我能够在 Spark 本地模式下的
  • Hive“添加分区”并发

    我们有一个外部 Hive 表 用于处理原始日志文件数据 这些文件每小时一次 并按日期和源主机名分区 目前 我们正在使用简单的 python 脚本导入文件 这些脚本每小时触发几次 该脚本根据需要在 HDFS 上创建子文件夹 从临时本地存储复制
  • 伪分布式模式下的 Hadoop。连接被拒绝

    P S 请不要将此标记为重复 Hi 我一直在尝试以伪分布式模式设置和运行 Hadoop 当我运行 start all sh 脚本时 我得到以下输出 starting namenode logging to home raveesh Hado
  • 纱线上的火花,连接到资源管理器 /0.0.0.0:8032

    我正在我的开发机器 Mac 上编写 Spark 程序 hadoop的版本是2 6 spark的版本是1 6 2 hadoop集群有3个节点 当然都在linux机器上 我在idea IDE中以spark独立模式运行spark程序 它运行成功
  • 将数据从 oracle 移动到 HDFS,处理并从 HDFS 移动到 Teradata

    我的要求是 将数据从 Oracle 移至 HDFS 处理HDFS上的数据 将处理后的数据移至 Teradata 还需要每 15 分钟执行一次整个处理 源数据量可能接近50GB 处理后的数据也可能相同 在网上搜索了很多之后 我发现 PRARO
  • 更改 Spark Streaming 中的输出文件名

    我正在运行一个 Spark 作业 就逻辑而言 它的性能非常好 但是 当我使用 saveAsTextFile 将文件保存在 s3 存储桶中时 输出文件的名称格式为 part 00000 part 00001 等 有没有办法更改输出文件名 谢谢
  • Hive:如何分解嵌入 CSV 文件中的 JSON 列?

    从 CSV 文件 带有标题和管道分隔符 中 我得到了以下两个内容 其中包含一个 JSON 列 内部有一个集合 如下所示 第一种情况 使用没有名称的 JSON 集合 ProductId IngestTime ProductOrders 918
  • 处理 oozie 工作流程中的循环

    我有一个 oozie 用例 用于检查输入数据可用性并根据数据可用性触发 MapReduce 作业 所以我编写了一个 shell 脚本来检查输入数据 并在 oozie 中为其创建了一个 ssh 操作 输入数据检查的重试次数和重试间隔应该是可配
  • 无法在 Hadoop Map-Reduce 作业中加载 OpenNLP 句子模型

    我正在尝试将 OpenNLP 集成到 Hadoop 上的 Map Reduce 作业中 从一些基本的句子分割开始 在地图函数中 运行以下代码 public AnalysisFile analyze String content InputS
  • Talend 和 Apache Spark?

    我对 Talend 和 Apache Spark 在大数据生态系统中的定位感到困惑 因为 Apache Spark 和 Talend 都可以用于 ETL 有人可以用一个例子解释一下吗 Talend 是一种基于工具的大数据方法 通过内置组件支
  • Hive:在查询中将 array 转换为 array

    我有两张桌子 create table a 1 array

随机推荐

  • Flutter 自定义marquee垂直滚动

    自定义垂直marquee插件 用来向上垂直滚动列表 一般滚动公告 自定义类 import dart async import package flutter material dart class Marquee extends State
  • mongodb的sharding(分片)横向扩容的方法

    sharding是mongodb进行横向扩容的方法 sharding把一个集合的不同部分存储到不同的机器上 当一个数据库集合变得很大时 你只需要加入新的机器即可 sharding自动把集合的数据分布到新的服务器上 sharding自动实现数
  • uni-app小程序中v-show与display:flex一起使用时v-show不生效!

    问题 同时使用v show与display flex的时候 发现v show不能隐藏元素 原因 经排查原因后发现是因为display flex样式的优先级高于了v show中的display none 解决办法 display flex不要
  • xpah的使用

    目录 基本介绍 基本使用 案例 基本介绍 为什么要学习xpath scrapy框架支持xpath提取 selenium 经常使用xpath提取 使用简洁 语法稍稍复杂 xpath是什么 全称 xml path language 从xml中提
  • Jackson快速入门

    Java生态圈中有很多处理JSON和XML格式化的类库 Jackson是其中比较著名的一个 虽然JDK自带了XML处理类库 但是相对来说比较低级 使用本文介绍的Jackson等高级类库处理起来会方便很多 引入类库 由于Jackson相关类库
  • How to use jupyterlab in Ubuntu 22.04

    How to use jupyterlab in Ubuntu 22 04 Install Start Stop Install lwk qwfys pip install jupyterlab upgrade i http mirrors
  • matplotlib中颜色映射的使用

    matplotlib3 3中使用颜色映射 问题描述 在Python编程从入门到实践一书中15 2 8节 按照书中代码 在python3 8与matplotlib3 3中 camp plt cm Blues报错 解决 搜索发现应将此处语法改为
  • WDS桥接副路由器有线上网方法

    副路由器DHCP一定要关闭 或者IP池设置的范围不能包括有线设备IP
  • 替换字符串中出现的某段字符串的C语言和C++实现方式

    C语言实现方式 使用了循坏来重复替换操作 直到无法再找到需要替换的子串为止 具体实现如下 include
  • ajax地址url和action,jsp,ajax_JSP中 post url地址重写or action如何实现,jsp,ajax - phpStudy...

    JSP中 post url地址重写or action如何实现 求解在JSP中 post url地址 ctx web webuser getRights 这个是获取导航JSON ctx 是应用地址知道 后面 web webuser getRi
  • Docker实践(一)应用场景和安装

    随着互联网的发展 容器技术越来越得到大规模应用厂家的重视 Docker作为paas平台的容器 最近几年引起众多技术人士的关注 并且也越来越流行 一 Docker是什么 Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依
  • (c/c++)——类型转换

    文章目录 一 C风格的类型转换 二 C 的强制类型转换 1 static cast 最常用 2 reinterpret cast 只用于指针或引用转换 3 const cast 去除指针或引用的const限定 4 dynamic cast
  • QT 项目中 配置文件 pro详解

    QT 的配置文件 pro 解析 1 注释 单行注释 2 QT core gui QT gui 新增 或者减去 QT使用的模块 各个模块间使用空格分开 默认会包含 core 与 gui两个模块 3 TEMPLATE VALUE模板 VALUE
  • mysql group by 后求和_MySQL分组求和GROUP BY

    源代码实例 工资统计表 SELECT wages header bill date wages name SUM wages money AS moneys FROM wages header LEFT JOIN wages ON wage
  • 输入字符串,统计各个字符出现的个数(C语言实现)

    include
  • java 线程同步的list_java集合框架线程同步代码详解

    List接口的大小可变数组的实现 实现了所有可选列表操作 并允许包括null在内的所有元素 除了实现List接口外 此类还提供一些方法来操作内部用来存储列表的数组的大小 此类大致上等同于Vector类 除了此类是不同步的 size isEm
  • C语言——输入3个整数进行比较,要求从小到大输出

    方法一 3个数值从小到大进行排序 把所有可能罗列出来 输出的时候选择运行其中的一种可能输出 include
  • MySQL集群高可用架构

    MySQL集群高可用架构 前言 高可用架构对于互联网服务基本是标配 无论是应用服务还是数据库服务都需要做到高可用 对于一个系统而言 可能包含很多模块 比如前端应用 缓存 数据库 搜索 消息队列等 每个模块都需要做到高可用 才能保证整个系统的
  • java中的IO和NIO的区别原理

    Java NIO和IO的主要区别 IO NIO 面向Stream 面向Buffer 阻塞IO 非阻塞IO Selectors 面向Stream和面向Buffer Java NIO和IO之间最大的区别是IO是面向流 Stream 的 NIO是
  • Hadoop学习笔记二 - kNN算法实现用户风险分类

    在银行这个极其庞杂的交易体系中 每天都能收集到大量的用户信息和用户数据 而伴随着我国利率市场化的不断深化 净利差的迅速收窄 各大银行都希望利用手头的大量用户信息和实时产生的用户数据 对用户进行深度分析挖掘以便进行风险管控和个性化营销 降低银