金融贷款逾期的模型构建1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012736685/article/details/85060242

数据

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和线性回归测出得准确率一模一样?

猜你喜欢

转载自blog.csdn.net/u012736685/article/details/85060242
今日推荐