概述
数据
data_all.csv文件是非原始数据,已经处理过了。数据是金融数据, 我们要做的是预测贷款用户是否会逾期。表格中, status是标签: 0表示未逾期, 1表示逾期。
任务——模型构建
给定数据集,数据三七分,随机种子2018。(在任务1中什么都不用考虑,即不需数据处理和模型调参)
调用sklearn的包,简单构建逻辑回归、SVM和决策树3个模型,评分方式任意(e.g. 准确度和auc值)。
一、相关库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
二、数据读取与划分
由于数据中,status的列为标签,且status列不是第一列和最后一列。==》训练集如何便捷获取???
==》使用 pandas 的 drop 函数获取训练集。
## 读取数据
data = pd.read_csv("data_all.csv")
y = data['status']
x = data.drop(labels='status', axis=1)
## 数据集划分
x_train, x_test, y_train, y_test = train_test_split(x, y,test_size=0.3,random_state=2018)
print(len(x)) # 4754
1、drop() 函数
drop() 函数用于删除表中的某一行或某一列,它不改变原有的dataframe中的数据,而是返回另一个dataframe来存储删除后的数据。
(1)drop函数的使用:删除行、删除列
drop函数默认删除行,列需要加axis = 1
print frame.drop(['a'])
print frame.drop(['Ohio'], axis = 1)
(2)drop函数的使用:inplace参数
inplace参数默认为False,若 inplace=True 表示原数组直接就被替换。也就是说,采用inplace=True之后,原数组名(如2和3情况所示)对应的内存值直接改变;
而采用inplace=False之后,原数组名对应的内存值并不改变,需要将新的结果赋给一个新的数组或者覆盖原数组的内存位置。
## 下面三种方式等价
DF= DF.drop('column_name', axis=1);
DF.drop('column_name',axis=1, inplace=True)
DF.drop([DF.columns[[0,1, 3]]], axis=1, inplace=True) # Note: zero indexed
三、模型构建与评估
基本流程:模型构建model;model.fit();model.score()
## 逻辑回归模型
lr = LogisticRegression(random_state=2018)
lr.fit(x_train,y_train)
score1 = lr.score(x_test,y_test)
print(score1)
## SVM模型
svm = SVC(random_state=2018)
svm.fit(x_train,y_train)
score2 = svm.score(x_test, y_test)
print(score2)
## 决策树模型
dt = DecisionTreeClassifier(random_state=2018)
dt.fit(x_train, y_train)
score3 = dt.score(x_test,y_test)
print(score3)
疑问:使用SVM和线性回归测出得准确率一模一样?
最后
以上就是温暖花瓣为你收集整理的金融贷款逾期的模型构建1的全部内容,希望文章能够帮你解决金融贷款逾期的模型构建1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复