💖💖作者:计算机毕业设计小途
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目
目录
- 金融交易欺诈行为分析与可视化系统介绍
- 金融交易欺诈行为分析与可视化系统演示视频
- 金融交易欺诈行为分析与可视化系统演示图片
- 金融交易欺诈行为分析与可视化系统代码展示
- 金融交易欺诈行为分析与可视化系统文档展示
金融交易欺诈行为分析与可视化系统介绍
《基于大数据的金融交易欺诈行为分析与可视化》是一套面向金融交易风控场景的本科毕设系统,主要围绕交易数据里的欺诈线索做分析和展示。数据层用Hadoop的HDFS存放原始交易记录,用Spark和Spark SQL完成数据清洗、聚合统计与特征计算,Pandas、NumPy辅助做数值处理和结果整理。后端提供Python+Django和Java+Spring Boot两个版本,数据库用MySQL保存用户、交易信息和分析结果。前端用Vue、ElementUI、Echarts、HTML、CSS、JavaScript、jQuery搭建页面和图表。系统功能包括系统首页、大屏可视化、数据管理、用户管理、交易信息管理、欺诈分布分析、地理欺诈分析、客户欺诈分析、交易行为分析、时间模式分析、欺诈画像分析、个人信息和修改密码。用户可以从交易信息中查看订单流水,在欺诈分布分析里看不同类型欺诈的占比,在地理欺诈分析里按省份城市观察风险差异,在客户欺诈分析里找异常客户,在交易行为分析里看金额、频次等习惯,在时间模式分析里观察欺诈发生的时段规律,欺诈画像分析则把客户特征和欺诈标签串起来。大屏可视化把关键指标、趋势和地图集中展示,方便快速了解整体情况。整个系统不追求复杂业务,重点是把大数据分析流程和可视化展示做完整,让使用者能从数据里看到金融交易欺诈的分布和变化。
金融交易欺诈行为分析与可视化系统演示视频
项目演示视频
金融交易欺诈行为分析与可视化系统演示图片
金融交易欺诈行为分析与可视化系统代码展示
spark=SparkSession.builder.appName("FinancialFraudAnalysis").master("local[*]").config("spark.sql.shuffle.partitions","4").getOrCreate()deffraud_distribution_analysis(request):df=spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/finance_fraud").option("dbtable","trade_info").option("user","root").option("password","123456").load()df.createOrReplaceTempView("trade_info")total_df=spark.sql("SELECT COUNT(*) AS total FROM trade_info")total=total_df.collect()[0]["total"]fraud_df=spark.sql("SELECT fraud_type, COUNT(*) AS cnt FROM trade_info WHERE is_fraud = 1 GROUP BY fraud_type ORDER BY cnt DESC")fraud_list=fraud_df.collect()result=[]forrowinfraud_list:ratio=round(row["cnt"]/total*100,2)iftotalelse0result.append({"fraud_type":row["fraud_type"],"count":row["cnt"],"ratio":ratio})pie_data=[{"name":item["fraud_type"],"value":item["count"]}foriteminresult]bar_data={"types":[item["fraud_type"]foriteminresult],"counts":[item["count"]foriteminresult]}fraud_total=sum(item["count"]foriteminresult)normal_total=total-fraud_totalreturn{"total":total,"fraud_total":fraud_total,"normal_total":normal_total,"details":result,"pie_data":pie_data,"bar_data":bar_data}defgeo_fraud_analysis(request):df=spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/finance_fraud").option("dbtable","trade_info").option("user","root").option("password","123456").load()df.createOrReplaceTempView("trade_info")geo_df=spark.sql("SELECT province, city, COUNT(*) AS trade_cnt, SUM(CASE WHEN is_fraud = 1 THEN 1 ELSE 0 END) AS fraud_cnt FROM trade_info GROUP BY province, city")geo_df.createOrReplaceTempView("geo_stat")stat_df=spark.sql("SELECT province, city, trade_cnt, fraud_cnt, ROUND(fraud_cnt / trade_cnt * 100, 2) AS fraud_rate FROM geo_stat WHERE trade_cnt > 0 ORDER BY fraud_rate DESC")rows=stat_df.collect()map_data=[]top_city=Nonemax_rate=-1forrowinrows:item={"province":row["province"],"city":row["city"],"trade_cnt":row["trade_cnt"],"fraud_cnt":row["fraud_cnt"],"fraud_rate":row["fraud_rate"]}map_data.append(item)ifrow["fraud_rate"]>max_rate:max_rate=row["fraud_rate"]top_city=item avg_rate=round(sum([r["fraud_rate"]forrinmap_data])/len(map_data),2)ifmap_dataelse0return{"map_data":map_data,"top_city":top_city,"avg_rate":avg_rate,"city_count":len(map_data)}deftransaction_behavior_analysis(request):df=spark.read.format("jdbc").option("url","jdbc:mysql://localhost:3306/finance_fraud").option("dbtable","trade_info").option("user","root").option("password","123456").load()df.createOrReplaceTempView("trade_info")behavior_df=spark.sql("SELECT customer_id, COUNT(*) AS trade_cnt, SUM(amount) AS total_amount, AVG(amount) AS avg_amount, MAX(amount) AS max_amount FROM trade_info GROUP BY customer_id")behavior_df.createOrReplaceTempView("behavior_stat")fraud_behavior=spark.sql("SELECT b.customer_id, b.trade_cnt, b.total_amount, b.avg_amount, b.max_amount, SUM(CASE WHEN t.is_fraud = 1 THEN 1 ELSE 0 END) AS fraud_cnt FROM behavior_stat b JOIN trade_info t ON b.customer_id = t.customer_id GROUP BY b.customer_id, b.trade_cnt, b.total_amount, b.avg_amount, b.max_amount")fraud_behavior.createOrReplaceTempView("fraud_behavior")high_risk=spark.sql("SELECT customer_id, trade_cnt, total_amount, avg_amount, max_amount, fraud_cnt, ROUND(fraud_cnt / trade_cnt * 100, 2) AS fraud_rate FROM fraud_behavior WHERE fraud_cnt > 0 ORDER BY fraud_rate DESC, fraud_cnt DESC LIMIT 20")rows=high_risk.collect()risk_list=[]forrowinrows:level="高"ifrow["fraud_rate"]>=50else"中"ifrow["fraud_rate"]>=20else"低"risk_list.append({"customer_id":row["customer_id"],"trade_cnt":row["trade_cnt"],"total_amount":row["total_amount"],"avg_amount":row["avg_amount"],"max_amount":row["max_amount"],"fraud_cnt":row["fraud_cnt"],"fraud_rate":row["fraud_rate"],"level":level})amount_ranges=spark.sql("SELECT CASE WHEN amount < 1000 THEN '小额' WHEN amount < 10000 THEN '中额' ELSE '大额' END AS amount_range, COUNT(*) AS cnt FROM trade_info GROUP BY amount_range").collect()range_data=[{"range":r["amount_range"],"count":r["cnt"]}forrinamount_ranges]return{"risk_list":risk_list,"range_data":range_data,"high_risk_count":len(risk_list)}金融交易欺诈行为分析与可视化系统文档展示
💖💖作者:计算机毕业设计小途
💙💙个人简介:曾长期从事计算机专业培训教学,本人也热爱上课教学,语言擅长Java、微信小程序、Python、Golang、安卓Android等,开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。平常喜欢分享一些自己开发中遇到的问题的解决办法,也喜欢交流技术,大家有技术代码这一块的问题可以问我!
💛💛想说的话:感谢大家的关注与支持!
💜💜
网站实战项目
安卓/小程序实战项目
大数据实战项目
深度学习实战项目