1. 程式人生 > >金融貸款逾期的模型構建1

金融貸款逾期的模型構建1

資料

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和線性迴歸測出得準確率一模一樣?