一、背景及目标

根据提供的金融数据,分别使用SVM和决策树两种算法预测贷款用户是否会逾期。

二、任务分析

  1. 导入数据后,首先,由于数据中存在缺失值,因此需要对缺失值数据进行预处理。
  2. 其次,对明显与模型无关的特征进行删除。
  3. 最后,分别采用SVM和决策树进行模型训练,预测结果以及输出评分。

三、数据预处理

一共4754行,89列(除去首行、首列)

  1. 直接删除,对模型影响不大的数据及特征,比如固定的个人信息
    列:custid、trade_no、bank_card_no、id_name
    行:删除很多项特征缺失的用户信息
    缺失特征数据的用户数据:apply_score等到最后一个特征全为缺失项的用户数据
  2. 特征转换:特征student_feature列的NA转为0,2转为0(2只有2个)
  3. 几个需考虑的因素
    城市:境外0,一线1,二线2,三线3,四线4,NA及其他(共4组数据,删除)
    现阶段不进行处理而直接删除的列:比如 first_transaction_time,latest_query_time,loans_latest_time

四、代码实现

代码实现与zuolinye一起完成。首先是数据处理,包括删除不要信息、缺失值填充、映射替换以及数据归一化。

"""1. 导包"""
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import f1_score,r2_score
from  sklearn.svm import LinearSVC"""2. 读取数据"""
dataset = pd.read_csv('F:\AI\mission_data\mission_data\data.csv',encoding='gbk')"""3. 数据处理"""
# 删除固定信息列
dataset = dataset.drop(["custid","trade_no","bank_card_no","id_name","first_transaction_time","latest_query_time","loans_latest_time","source"],axis=1)
# 对于sstudent_feature列,我们进行NAN转成0,2转为0
# 缺失值填充
dataset["student_feature"] = dataset["student_feature"].fillna(0)
# 2替换为0
dataset["student_feature"] = dataset["student_feature"].replace([2],[0])# 针对城市列'reg_preference_for_trad',进行数据替换
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("一线城市", "1")
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("二线城市", "2")
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("三线城市", "3")
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("其他城市", "4")
dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("境外", "0")# 填充其他空值
# 使用均值进行填充
# dataset.fillna(dataset.mean(), inplace=True)
# 使用众数进行填充
dataset = dataset.fillna(0) # 使用 0 替换所有 NaN 的值
col = dataset.columns.tolist()[1:]def missing(df, columns):"""使用众数填充缺失值df[i].mode()[0] 获取众数第一个值"""col = columnsfor i in col:df[i].fillna(df[i].mode()[0], inplace=True)df[i] = df[i].astype('float')missing(dataset, col)# 将object类型转成folat
dataset = dataset.convert_objects(convert_numeric=True)"""4. 数据划分"""
X = dataset.drop(["status"],axis=1)
Y = dataset["status"]# 数据按正常的2、8划分
X_train, X_test, y_train, y_test = train_test_split(X, Y,test_size=0.2, random_state=666)
# not enough values to unpack (expected 4, got 2)from sklearn.preprocessing import minmax_scale # minmax_scale归一化,缩放到0-1
X_train = minmax_scale(X_train)
X_test =  minmax_scale(X_test)
# Input contains NaN, infinity or a value too large for dtype('float64')."""5. 数据归一化"""
from sklearn.preprocessing import minmax_scale
# 归一化,缩放到0-1
X_train = minmax_scale(X_train)
X_test =  minmax_scale(X_test)

然后对数据采用SVM模型预测并评分分析


"""6. 模型训练"""linearSVC = LinearSVC()
linearSVC.fit(X_train, y_train)
linearSVC_predict = linearSVC.predict(X_test)"""7. 输出结果"""
# print("predict:",log_reg.score(X_test, y_test))
print("predict:",linearSVC.score(X_test, y_test))
print("f1_score:",f1_score(y_test, linearSVC_predict))
print("r2_score:",r2_score(y_test, linearSVC_predict))

得到如下结果:

使用决策树模型预测并得到结果:

"""6. 模型训练"""dtree = DecisionTreeClassifier()
dtree.fit(X_train, y_train)
dtree_predict = dtree.predict(X_test)"""7. 输出结果"""
print("decision_tree准确率:", dtree.score(X_test, y_test))
print("f1_score准确率:", f1_score(y_test, dtree_predict))
print("r2_score准确率:", r2_score(y_test, dtree_predict))

使用SVM和决策树实现客户贷款逾期分析相关推荐

  1. 美团店铺评价语言处理以及分类(tfidf,SVM,决策树,随机森林,Knn,ensemble)...

    美团店铺评价语言处理以及分类(tfidf,SVM,决策树,随机森林,Knn,ensemble) 第一篇 数据清洗与分析部分 第二篇 可视化部分, 第三篇 朴素贝叶斯文本分类 支持向量机分类 支持向量机 ...

  2. 数据分享|R语言用主成分PCA、 逻辑回归、决策树、随机森林分析心脏病数据并高维可视化...

    全文链接:http://tecdat.cn/?p=22262 在讨论分类时,我们经常分析二维数据(一个自变量,一个因变量)(点击文末"阅读原文"获取完整代码数据). 但在实际生活中 ...

  3. Python SVM分类器 XGBOOST分类器 文本情绪分析

    Python SVM分类器 XGBOOST分类器 文本情绪分析 微博网民情绪识别比赛 目录 Python SVM分类器 XGBOOST分类器 文本情绪分析 疫情期间网民情绪识别比赛 一:比赛相关事项 ...

  4. ML之回归预测:利用十类机器学习算法(线性回归、kNN、SVM、决策树、随机森林、极端随机树、SGD、提升树、LightGBM、XGBoost)对波士顿数据集回归预测(模型评估、推理并导到csv)

    ML之回归预测:利用十类机器学习算法(线性回归.kNN.SVM.决策树.随机森林.极端随机树.SGD.提升树.LightGBM.XGBoost)对波士顿数据集[13+1,506]回归预测(模型评估.推 ...

  5. Matlab自带的分类学习工具箱(SVM、决策树、Knn等分类器)

    在matlab中,既有各种分类器的训练函数,比如"fitcsvm",也有图形界面的分类学习工具箱,里面包含SVM.决策树.Knn等各类分类器,使用非常方便.接下来讲讲如何使用. 启 ...

  6. sklearn学习-SVM例程总结2(特征选择——单因素方差分析(方差分析anova ))

    SVM with univariate feature selection(单因素方差分析) 本文隶属于机器学习的特征选择部分,是训练前对数据的预处理部分.对于机器学习而言,特征选择是影响结果的极其重 ...

  7. 关于《机器学习实战》中创建决策树的核心代码分析

       关于<机器学习实战>中创建决策树的核心代码分析                 SIAT  nyk          2017年10月21日星期六 一.源码内容 def create ...

  8. 基于 Word2Vec 和 SVM 的微博舆情情感演化分析 论文笔记

    目录 论文标题 引言 标题论文学术结构 1.相关研究综述(先前学者的研究) 2.研究方法 3.基于 Word2Vec 和 SVM 的微博情感演化分析 4.基于 Word2Vec 词相似度的舆情主体对象 ...

  9. 信贷产品年终总结之贷后逾期分析

    自本月月初疫情全面放开后,身边的朋友基本都阳了一遍,希望正在浏览本篇文章的读者您是还没阳过的幸运儿.另外,今天也是冬至了,祝各位读者身边健康,远离羊群! 最近我们分享了信贷业务年终总结系列的前2篇文章 ...

  10. 机器学习实现图像分类(简单易上手) SVM KNN 决策树 朴素贝叶斯 机器学习作业

    机器学习实现图像分类 SVM KNN 决策树 朴素贝叶斯 重要提示:本文仅仅靠调用python的sklearn中的模型包实现机器学习方法,不喜勿喷 代码主要参考并改进 https://blog.csd ...

最新文章

  1. 计算机项目管理报告,《软件项目管理》报告.doc
  2. xp系统怎么连接云服务器,xp系统怎么连接云服务器
  3. C++rat maze老鼠迷宫算法(附完整源码)
  4. The Distinguish of the share or static lib in MFC
  5. 基于chrome内核的.NET开发资源
  6. linux odbc连接数据库失败,在Linux中使用RODBC连接到SQL Server时出错
  7. 听说读论文也有trick?这篇文章告诉你深度学习论文阅读最佳姿势
  8. 文治者必有武备不然长大了挨欺负_2017届高考语文全国卷文言文专题阅读15篇(附答案)...
  9. Python:模块module
  10. arcgispython空间插值_基于python的空间距离权重计算——arcgis中的arcpy
  11. [转载] 全本张广泰——第九回 出世见师兄 广泰走江湖
  12. 安卓wifi连接 UID xxx does not have permission to update configuration “xxx“WPA_PSK
  13. oracle监听时区,对Oracle中时区及时间的认识
  14. linux命令大全 load,linux命令TOP参数load average详解[转]
  15. 计算机技术在建筑学的应用论文,计算机应用于建筑设计中的影响的论文
  16. linux面试大全最新
  17. 解决win10下Photoshop2018CC手绘板画画变上下
  18. 一位微信小程序萌新的学渣笔记(三)基础语法之常见组件
  19. CSDN添加页内跳转和页外指定段落跳转
  20. 大学计算机python期末考试_大学计算机程序设计(Python)_章节测验,期末考试,慕课答案查询公众号...

热门文章

  1. 高斯公式_注解_高数
  2. 用计算机写作文教学难点,《用计算机写作文》教学设计
  3. CAPM模型和Alpha策略
  4. CapstoneCS5212|CapstoneCS5218|DP转VGA1080P方案设计| DP转HDMI4K 30Hz方案设计
  5. 基于MATLAB机器视觉技术的水果分级研究进展
  6. VS2017安装WTL,解决创建WTL项目一直回弹问题
  7. 无损连接和保持依赖性(有脑就行,尽量说人话版本)
  8. bootstrap之双日历时间段选择控件—daterangepicker
  9. git-secrets安装教程
  10. c++运行错误: string subscript out of range