【Python支持向量机】Python客户银行贷款支持向量机数据分析可视化SVM(源码+数据集+报告)【独一无二】

简介: 【Python支持向量机】Python客户银行贷款支持向量机数据分析可视化SVM(源码+数据集+报告)【独一无二】

一、算法基本原理

支持向量机(Support Vector Machine,简称SVM)是一种强大的监督学习算法,主要用于分类和回归任务。其基本原理围绕着在高维空间中找到一个最优的超平面,以实现对数据进行最佳的分隔。SVM的核心思想是通过寻找支持向量,即数据中最靠近决策边界的点,来定义决策边界。这个决策边界的选择是为了使支持向量到决策边界的距离最大化,从而提高分类的稳定性和泛化性能。


在SVM中,数据点被视为在高维空间中的向量,而决策边界则是一个超平面,它将不同类别的数据分隔开。为了找到最优的超平面,SVM最大化了支持向量到决策边界的间隔,这个间隔表示了分类的确信度。支持向量是决策边界附近的数据点,其位置对决策边界的位置产生重要影响。


SVM还引入了核函数的概念,通过核函数将数据从原始空间映射到更高维的空间,使得非线性问题也能够在高维空间中找到线性的超平面。这种技术被称为核技巧,它使得SVM在处理复杂数据结构时表现出色。


训练SVM模型的过程涉及到最大化间隔的优化问题,通常使用拉格朗日乘数法进行求解。通过解这个优化问题,可以得到最优的超平面参数,从而实现对新数据的准确分类。


总体而言,SVM以其对高维空间的适应能力、对复杂数据结构的处理能力以及对泛化性能的提高而闻名。其基本原理强调在高维空间中找到最佳超平面,通过最大化支持向量到决策边界的间隔来实现优秀的分类性能。



👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 银行贷款 ” 获取。👈👈👈


二、代码设计思路

  1. 数据加载与预处理:
    使用pd.read_csv从文件中读取银行贷款客户数据,并将其存储在DataFrame中。
    对数据进行了简单的预处理,包括删除缺失值和将文本类别转换为数字表示。
  2. 支持向量机的性能分析:
    进行了多次试验,每次试验改变了训练集的比例,并使用SVC(支持向量机)进行训练和测试。
    绘制了支持向量机在不同训练集比例下的性能曲线。
  3. 与其他算法的性能比较:
    进行了与决策树和K近邻算法的性能比较。
    分别初始化了支持向量机、决策树和K近邻模型,在相同的训练集比例下进行多次试验,并绘制了它们的性能曲线。
  4. 数据可视化:
    绘制了关于银行贷款客户数据的直观可视化,包括贷款状态、婚姻状态、收入分布和欺诈状态的图表。
  5. 结果展示:
    每个阶段的结果都以图形方式展示,以便更好地理解数据和模型性能。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 银行贷款 ” 获取。👈👈👈


三、代码分析

通过使用支持向量机及其他分类算法,以及可视化手段,对银行贷款客户的数据进行了探索性分析和模型性能评估。

  1. 加载和预处理数据:
   with open("bankdebt.csv") as f:
       data = f.read()
   data = [line.split(',') for line in data.split('\n')]
   df = pd.DataFrame(data, columns=['ID', 'Loan', 'Status', 'Income', 'Fraud'])
   df = df.dropna()
   df['Loan'] = df['Loan'].map({'Yes': 1, 'No': 0})
   df['Status'] = df['Status'].map({'Single': 0, 'Married': 1, 'Divorced': 2})
   df['Fraud'] = df['Fraud'].map({'No': 0, 'Yes': 1})

加载名为"bankdebt.csv"的数据文件,将其转换为DataFrame格式,并进行简单的数据预处理。通过map函数将文本类别转换为数值表示,以便进行后续的机器学习模型训练。


👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 银行贷款 ” 获取。👈👈👈


2.支持向量机性能分析:
这段代码主要进行了支持向量机(SVM)性能分析,通过多次试验在不同的训练集比例下评估SVM在信用欺诈检测任务中的分类性能。


3.num_trials和train_size_range:

num_trials表示进行多少次试验,这里设置为10次。

train_size_range是一个列表,表示不同的训练集比例,这里设置为[0.6, 0.7, 0.8, 0.9]。


4.主要循环:

外层循环for i in range(num_trials)用于进行多次试验,每次试验都使用不同的随机种子random_state=i。

内层循环for train_size in train_size_range用于遍历不同的训练集比例。.


5.数据集划分:

X_train, X_test, y_train, y_test = train_test_split(df[['Loan', 'Status', 'Income']], df['Fraud'], test_size=1-train_size, random_state=i)

对数据集进行划分,其中test_size=1-train_size表示测试集比例为1减去训练集比例,random_state=i确保每次试验使用不同的数据划分。


6.支持向量机模型训练与测试:

svm_model = SVC()初始化支持向量机模型。
svm_model.fit(X_train, y_train)对支持向量机模型进行训练。
y_pred = svm_model.predict(X_test)使用训练好的模型进行预测。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 银行贷款 ” 获取。👈👈👈


7.性能评估与记录:

accuracy = accuracy_score(y_test, y_pred)

计算预测准确率,并将准确率记录在trial_accuracies列表中。


8.结果记录:

accuracies.append(trial_accuracies)

将每次试验的准确率列表记录在accuracies列表中。


9.性能曲线绘制:

plt.figure(figsize=(10, 6))  # 创建一个图形窗口,设置尺寸为(10, 6)。
plt.plot(train_size_range, accuracies[i], label=f'Trial {i + 1}') # 绘制每次试验的性能曲线,横轴为训练集比例,纵轴为准确率,并给每条曲线添加标签。
  1. 外层循环for i in range(num_trials)用于遍历每次试验。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 银行贷款 ” 获取。👈👈👈


四、对比分析

4.1. 支持向量机在信用欺诈检测中的性能曲线

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 银行贷款 ” 获取。👈👈👈


4.2. 决策树在信用欺诈检测中的性能

决策树算法作为一种基于树结构的分类模型,具有直观的解释性和适应性。通过与KNN的比较,我们对决策树在信用欺诈检测任务中的性能进行了分析。


4.3. KNN在信用欺诈检测中的性能

K近邻算法是一种基于实例的学习方法,其性能受到训练集规模和特征选择的影响。通过对信用欺诈检测任务的多次试验,我们观察到KNN在不同训练集比例下的性能表现。

首先,在较小的训练集比例下,KNN的准确率普遍较低。这可能是因为在小规模数据集上,KNN容易受到噪声和局部波动的影响,导致模型过度拟合。随着训练集比例的增加,KNN的性能逐渐提升,达到一个相对稳定的水平。这表明KNN在大规模数据集上更具优势,能够更好地捕捉信用欺诈的模式。

👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 银行贷款 ” 获取。👈👈👈


4.4.对银行贷款客户数据的可视化分析

  1. Loan Status可视化:

第一个子图展示了贷款状态的条形图,通过sns.countplot统计了’Loan’列中不同贷款状态的数量,帮助理解数据中贷款的分布情况。


  1. Marital Status可视化:

第二个子图展示了婚姻状态的条形图,通过sns.countplot统计了’Status’列中不同婚姻状态的数量,提供了关于客户婚姻状况的信息。


  1. Income Distribution可视化:

第三个子图是收入分布的直方图,通过sns.histplot展示了客户收入的分布情况,可用于了解收入水平的整体分布及其形状。


  1. Fraud Status可视化:

最后一个子图展示了欺诈状态的条形图,通过sns.countplot统计了’Fraud’列中不同欺诈状态的数量,帮助了解数据中欺诈情况的分布。



👉👉👉 源码获取 关注【测试开发自动化】公众号,回复 “ 银行贷款 ” 获取。👈👈👈

相关文章
|
5天前
|
数据采集 数据可视化 数据挖掘
基于Python的数据分析与可视化实战
本文将引导读者通过Python进行数据分析和可视化,从基础的数据操作到高级的数据可视化技巧。我们将使用Pandas库处理数据,并利用Matplotlib和Seaborn库创建直观的图表。文章不仅提供代码示例,还将解释每个步骤的重要性和目的,帮助读者理解背后的逻辑。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供有价值的见解和技能。
19 0
|
1天前
|
数据可视化 数据挖掘 数据处理
零基础入门金融风控之贷款违约预测的Task2:数据分析
零基础入门金融风控之贷款违约预测的Task2:数据分析
|
7天前
|
数据可视化 数据挖掘 大数据
Python 数据分析入门:从零开始处理数据集
Python 数据分析入门:从零开始处理数据集
|
16天前
|
数据可视化 Python
Python数据可视化-动态柱状图可视化
Python数据可视化-动态柱状图可视化
|
2天前
|
数据采集 数据可视化 数据挖掘
Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
【10月更文挑战第3天】Python 数据分析实战:使用 Pandas 进行数据清洗与可视化
17 0
|
8天前
|
数据可视化 Python
Python 高级绘图:从基础到进阶的可视化实践
本文介绍了使用 Python 的强大绘图库 matplotlib 实现多种图表绘制的方法,包括简单的折线图、多条折线图、柱状图、饼图、散点图及 3D 图的绘制。通过具体代码示例展示了如何设置轴标签、标题、图例等元素,并指出了 matplotlib 支持更多高级绘图功能。来源:https://www.wodianping.com/app/2024-10/47112.html。
52 0
|
机器学习/深度学习 Python 计算机视觉
python svm pca实践二
继上一片的内容,这片来·讲一下sklearn来进行简单的人脸识别,这里用的方法是pca和svm 先导入必要的包和数据集 import numpy as np import matplotlib.
2133 0
|
机器学习/深度学习 Python
python svm pca实践(一)
好久没写博客了 这里主要用python的sklearn包,来进行简单的svm的分类和pca的降维 svm是常用的分类器,其核心是在分类的时候找到一个最优的超平面,使得所有的样本与超平面之间的距离达到最小。
2879 0
|
2天前
|
存储 人工智能 Java
Python编程入门:从基础到实战
【10月更文挑战第4天】本文旨在为初学者提供一个全面而深入的Python编程学习路径。我们将从Python的基本语法和概念开始,然后逐步深入到更复杂的主题,如数据结构、面向对象编程和异常处理等。最后,我们将通过一些实际的项目案例,帮助读者将理论知识应用到实践中去。无论你是编程新手,还是有一定经验的开发者,都可以在这篇文章中找到适合自己的学习内容。让我们一起开启Python编程的学习之旅吧!
|
1天前
|
存储 人工智能 数据挖掘
探索Python编程:从基础到进阶
【10月更文挑战第5天】在数字时代的浪潮中,掌握编程技能已成为一项宝贵的能力。本文旨在为初学者提供一个深入浅出的Python编程之旅,从基本概念到实际应用,逐步揭示编程之美。无论你是编程新手还是希望深化理解,跟随这篇文章的脚步,你将学会如何用Python语言构建你的第一个程序,并了解代码背后的逻辑。让我们开始吧,解锁编程的秘密,开启你的技术成长之路!