金融貸款逾期的模型構建1
阿新 • • 發佈:2018-12-18
資料
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和線性迴歸測出得準確率一模一樣?