💖💖作者:计算机毕业设计杰瑞 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学校实战项目 计算机毕业设计选题推荐
信贷风险评估的数据可视化分析与预测系统介绍
信贷风险评估的数据可视化分析与预测系统是一套基于大数据技术构建的金融风控解决方案,该系统充分运用Hadoop分布式存储和Spark大数据计算引擎的强大能力,对海量信贷数据进行深度挖掘和智能分析。系统采用Python作为主要开发语言,结合Django后端框架构建稳定的服务端架构,前端运用Vue框架配合ElementUI组件库和Echarts可视化工具,为用户提供直观友好的操作界面和丰富的数据展示效果。系统核心功能涵盖用户管理、风控专员管理、贷款信息录入、贷款申请处理、信用评估计算、信贷数据分析等模块,通过MySQL数据库存储结构化数据,利用HDFS存储大规模非结构化数据,运用Spark SQL进行复杂查询分析,结合Pandas和NumPy进行数据预处理和特征工程。系统能够实现对借款人信用状况的多维度评估,通过机器学习算法对违约风险进行预测,同时提供可视化图表展示风险分布情况,帮助金融机构提升风控决策效率和准确性。
信贷风险评估的数据可视化分析与预测系统演示视频
信贷风险评估的数据可视化分析与预测系统演示图片
信贷风险评估的数据可视化分析与预测系统代码展示
from pyspark.sql import SparkSession
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.classification import RandomForestClassifier
from pyspark.ml.evaluation import BinaryClassificationEvaluator
import pandas as pd
import numpy as np
from django.http import JsonResponse
from django.views import View
import json
def credit_assessment_analysis(user_id, loan_amount, income, age, employment_years):
spark = SparkSession.builder.appName("CreditAssessment").config("spark.sql.adaptive.enabled", "true").getOrCreate()
user_data = pd.DataFrame([[user_id, loan_amount, income, age, employment_years, loan_amount/income]],
columns=['user_id', 'loan_amount', 'income', 'age', 'employment_years', 'debt_ratio'])
spark_df = spark.createDataFrame(user_data)
spark_df.createOrReplaceTempView("user_credit")
credit_score = spark.sql("SELECT user_id, CASE WHEN debt_ratio < 0.3 AND income > 5000 THEN 'A' WHEN debt_ratio < 0.5 AND income > 3000 THEN 'B' WHEN debt_ratio < 0.7 THEN 'C' ELSE 'D' END as credit_level FROM user_credit").collect()[0]['credit_level']
risk_factors = []
if loan_amount / income > 0.5:
risk_factors.append("debt_ratio_high")
if age < 25 or age > 65:
risk_factors.append("age_risk")
if employment_years < 2:
risk_factors.append("employment_unstable")
if income < 3000:
risk_factors.append("low_income")
assessment_result = {
'user_id': user_id,
'credit_level': credit_score,
'risk_factors': risk_factors,
'approval_status': 'approved' if credit_score in ['A', 'B'] and len(risk_factors) < 2 else 'rejected',
'recommended_amount': min(loan_amount, income * 0.3 * 12) if credit_score in ['A', 'B'] else 0
}
spark.stop()
return assessment_result
def loan_data_batch_analysis(data_path):
spark = SparkSession.builder.appName("LoanDataAnalysis").config("spark.sql.adaptive.enabled", "true").config("spark.sql.adaptive.coalescePartitions.enabled", "true").getOrCreate()
loan_df = spark.read.option("header", "true").option("inferSchema", "true").csv(data_path)
loan_df.createOrReplaceTempView("loan_data")
monthly_stats = spark.sql("""
SELECT DATE_FORMAT(loan_date, 'yyyy-MM') as month,
COUNT(*) as total_loans,
SUM(loan_amount) as total_amount,
AVG(loan_amount) as avg_amount,
SUM(CASE WHEN loan_status = 'default' THEN 1 ELSE 0 END) as default_count,
ROUND(SUM(CASE WHEN loan_status = 'default' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) as default_rate
FROM loan_data
WHERE loan_date >= DATE_SUB(CURRENT_DATE(), 365)
GROUP BY DATE_FORMAT(loan_date, 'yyyy-MM')
ORDER BY month
""").collect()
risk_distribution = spark.sql("""
SELECT credit_level,
COUNT(*) as loan_count,
AVG(loan_amount) as avg_loan_amount,
SUM(CASE WHEN loan_status = 'default' THEN 1 ELSE 0 END) as default_count,
ROUND(AVG(CASE WHEN loan_status = 'default' THEN loan_amount ELSE 0 END), 2) as avg_loss_amount
FROM loan_data
GROUP BY credit_level
ORDER BY credit_level
""").collect()
age_analysis = spark.sql("""
SELECT CASE
WHEN age < 25 THEN 'under_25'
WHEN age BETWEEN 25 AND 35 THEN '25_35'
WHEN age BETWEEN 36 AND 50 THEN '36_50'
ELSE 'over_50'
END as age_group,
COUNT(*) as total_count,
ROUND(AVG(loan_amount), 2) as avg_loan_amount,
ROUND(SUM(CASE WHEN loan_status = 'default' THEN 1 ELSE 0 END) * 100.0 / COUNT(*), 2) as default_rate
FROM loan_data
GROUP BY CASE
WHEN age < 25 THEN 'under_25'
WHEN age BETWEEN 25 AND 35 THEN '25_35'
WHEN age BETWEEN 36 AND 50 THEN '36_50'
ELSE 'over_50'
END
""").collect()
analysis_result = {
'monthly_trends': [row.asDict() for row in monthly_stats],
'risk_distribution': [row.asDict() for row in risk_distribution],
'age_analysis': [row.asDict() for row in age_analysis],
'total_loans': loan_df.count(),
'total_amount': loan_df.agg({'loan_amount': 'sum'}).collect()[0][0]
}
spark.stop()
return analysis_result
def risk_prediction_model_training(training_data_path):
spark = SparkSession.builder.appName("RiskPredictionModel").config("spark.sql.adaptive.enabled", "true").config("spark.serializer", "org.apache.spark.serializer.KryoSerializer").getOrCreate()
training_df = spark.read.option("header", "true").option("inferSchema", "true").csv(training_data_path)
training_df = training_df.filter(training_df.loan_amount.isNotNull() & training_df.income.isNotNull() & training_df.age.isNotNull())
training_df = training_df.withColumn("debt_ratio", training_df.loan_amount / training_df.income)
training_df = training_df.withColumn("age_score", (training_df.age - 18) / 47.0)
training_df = training_df.withColumn("employment_score", training_df.employment_years / 30.0)
feature_cols = ['loan_amount', 'income', 'age', 'employment_years', 'debt_ratio', 'age_score', 'employment_score']
assembler = VectorAssembler(inputCols=feature_cols, outputCol="features")
training_df = assembler.transform(training_df)
training_df = training_df.withColumn("label", (training_df.loan_status == "default").cast("int"))
train_data, test_data = training_df.randomSplit([0.8, 0.2], seed=42)
rf = RandomForestClassifier(featuresCol="features", labelCol="label", numTrees=100, maxDepth=10, seed=42)
model = rf.fit(train_data)
predictions = model.transform(test_data)
evaluator = BinaryClassificationEvaluator(labelCol="label", rawPredictionCol="rawPrediction", metricName="areaUnderROC")
auc_score = evaluator.evaluate(predictions)
feature_importance = model.featureImportances.toArray()
importance_dict = dict(zip(feature_cols, feature_importance))
model_performance = {
'auc_score': round(auc_score, 4),
'feature_importance': importance_dict,
'model_path': '/models/risk_prediction_model',
'training_samples': train_data.count(),
'test_samples': test_data.count()
}
model.write().overwrite().save("/models/risk_prediction_model")
spark.stop()
return model_performance
信贷风险评估的数据可视化分析与预测系统文档展示
💖💖作者:计算机毕业设计杰瑞 💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我! 💛💛想说的话:感谢大家的关注与支持! 💜💜 网站实战项目 安卓/小程序实战项目 大数据实战项目 深度学校实战项目 计算机毕业设计选题推荐