基于Hadoop信贷风险评估预测数据可视化分析系统
基于机器学习的信贷风险评估预测可视化分析系统

前言介绍

随着社会经济的快速发展,信贷业务规模不断扩大,信贷风险评估的重要性日益凸显。我们开发了一套信贷风险评估的数据可视化分析与预测系统。系统基于 Java 语言,融合了 Hadoop 大数据处理技术、Spring Boot 框架以及 MySQL 数据库,结合机器学习算法随机森林回归,数据分析数据清洗等功能。系统首页为用户提供清晰的导航与概览,个人中心方便用户管理个人信息与操作记录。

用户模块实现对客户信息的精准录入与管理,风控专员模块助力专业人员高效开展风险评估工作。贷款信息模块详细记录每一笔贷款的全生命周期数据,贷款申请模块则为客户提供便捷的申请流程。信用评估模块通过先进的算法对客户信用进行精准打分,信贷数据模块对海量信贷数据进行深度挖掘与可视化分析,帮助决策者快速洞察风险趋势。轮播图管理模块则用于展示重要信息与风险提示。该系统通过技术与业务的深度融合,为信贷风险防控提供了有力支持,助力金融机构稳健发展。

01开发环境

1.1 Java 技术

1.2 Spring Boot 框架

1.3 Hadoop,spark,hive

1.4 MySQL数据库

1.5 B/S 结构

1.6 Vue.js 技术

1.7 机器学习:随机森林回归算法

02系统功能亮点

亮点(机器学习(随机森林)、数据清洗,数据导入导出,数据预测、Echarts可视化)

1、数据管理:后台信息列表管理。

2、数据存储:mysql数据库。

3、可视化分析:各种数据分析统计后图表大屏展示

4、贷款分析预测:根据贷款人各项信息分析预测。

5、数据分析:根据hadoop大数据技术进行数据分析

03图片展示

在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

04部分代码展示

/**
 * 随机森林预测(交流学习+vx:S20231025S )
 */
private Map<String, Object> forecastRes(Instances instances, Map<String, Object> params, String[] eigenValueArr, String[] targetValueArr) throws Exception {

        Map<String, Object> forecastRes = new HashMap<>();

        // 预测结果

        // 创建一个与训练数据集结构相同的 Instance

        double[] instanceValue = new double[instances.numAttributes()];

        int x = 0;

        for (String attr : eigenValueArr) {

            if (instances.attribute(attr).isNominal()) {

                // 对于名义属性,使用indexOfValue

                double res = instances.attribute(attr).indexOfValue(params.get(attr).toString());

                instanceValue[x++] = res == -1 ? instances.attribute(attr).indexOfValue("unknown") : res; // 如果值不存在,使用Double.NaN

            } else {

                // 对于数值属性,直接使用数值

                instanceValue[x++] = Double.parseDouble(params.get(attr).toString());

            }

        }

        for (String attr : targetValueArr) {

            instanceValue[x++] = Double.NaN;

        }



        Instance instance = new DenseInstance(1.0, instanceValue);

        instance.setDataset(instances);



        for (int i = 0; i < targetValueArr.length; i++) {

            // 设置类属性索引为当前目标属性

            instances.setClassIndex(instances.numAttributes() - targetValueArr.length + i);



            // 创建并训练随机森林模型

            RandomForest randomForest = new RandomForest();

            randomForest.buildClassifier(instances);



            // 为预测创建一个新的实例

            double[] instanceValueForPrediction = Arrays.copyOf(instanceValue, instanceValue.length);

            instanceValueForPrediction[instances.numAttributes() - targetValueArr.length + i] = Double.NaN; // 设置目标属性为缺失值



            Instance instanceForPrediction = new DenseInstance(1.0, instanceValueForPrediction);

            instanceForPrediction.setDataset(instances);



            // 进行预测

            double predictedValue = randomForest.classifyInstance(instanceForPrediction);

            if (instances.classAttribute().isNominal()) {

                // 如果是名义属性,获取预测的类别名称

                String predictedClassName = instances.classAttribute().value((int) predictedValue);

                forecastRes.put(targetValueArr[i], predictedClassName);

            } else {

                // 如果是数值属性,直接使用预测值

                DecimalFormat df = new DecimalFormat("#.00");

                double formattedPredictedValue = Double.parseDouble(df.format(predictedValue));

                forecastRes.put(targetValueArr[i], formattedPredictedValue);

            }

        }

        return forecastRes;

    }

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐