信用卡違約客戶的預測模型的選擇(二)驗證過程
驗證過程
該資料集包含23個輸入變數(input variable)和一個響應變數(response variable)。該資料集來源於UCI machine learning repository,為某銀行的信用卡客戶資訊資料,共有30000個樣本,包括過去六個月的賬單還款情況。
Y:下個月還款違約情況(1=逾期,0=未逾期)
X1:信用額度,包括其個人和家庭補充信用。
X2:性別(1=male;2=female)
X3:教育(1=研究生,2=大學,3=高中,4=其他)
X4:婚姻狀況(1=已婚,2=單身,3=其他)
X5:年齡,age
X6-X11:過去六個月的還款情況。X6(2005年九月還款情況)。。。X11(2005年四月還款情況)。其中XN=-1,代表按時還款,XN=1,代表延時一個月還款,XN=2,代表延時兩個月還款,。。。,XN=n,代表延時n個月還款,
X12-X17:過去六個月的賬單數額情況。X12(2005年九月賬單數額情況)…X11(2005年四月賬單數額情況)。
X18-X23:過去六個月的還款數額情況。X18(2005年九月還款數額情況)…X23(2005年四月還款數額情況)。
環境配置
作業系統:windows7+64位
記憶體:4G
Cpu: intel core [email protected]2.6GHz
Python version: python 3.6.0
Python平臺:pycharm
首先獲取資料,將原始csv檔案轉化為txt檔案,逐行讀取資料,為利於後期迴歸運算將變數格式的資料統一轉化為float格式。在變數選取中我們本著類別變數均等,訓練矩陣隨機,訓練與測試矩陣28原則。
如下:
float(listFromLine[i])
分別定義標籤矩陣和變數矩陣,讀入客戶資料。
此模型預測變數為0或1。其中類別為1的變數6636個,類別為0的變數23364個。我們選擇相等的兩類樣本數0和1分別6600個。
首先進行資料集進行拆分,使用sklearn的cross_validation進行資料拆分。
from sklearn.cross_validationimport train_test_split
X_train,X_test, y_train, y_test=train_test_split(ran_M,rand_V)
(正例1662個,負例1638個。)
我們選擇13200個樣本,為了使得選取的樣本具有隨機性,由於原始樣本按照賬戶號輸入,可能存在一定的序列關聯性,打破原始順序的方法函式如下:
dataIndex = list(range(randM))
for j in range(randM):
randIndex = int(random.uniform(0, len(dataIndex)))
retm[j, :] =retm1[dataIndex[randIndex]]
classV[j] =classV1[dataInde[randIndex]]
del (dataIndex[randIndex])
首先定義一個list序列,然後利用隨機數函式,對序列取值,將取得的樣本值順序賦予新的序列矩陣。
變數篩選
計算輸入變數之間的相關係數,輸入變數與預測之間的相關關係。當資料量較大時,在進行corrcoef進行相關性計算時,超過了記憶體容量,出現memory error.我們只是為了大概掌握變數之間的相關程度,為避免memory error需進行矩陣的縮減,在這裡選取前5000行進行相關性計算。
從預測變數與輸入變數之間的相關係數可見,預測變數與大多數輸入變數之間的相關性較小,選取相關係數絕對值大於0.1的變數為LIMIT_BAL、PAY_1、PAY_2、PAY_3、PAY_4、PAY_5、PAY_6。
Corrcoef | default of credit account |
LIMIT_BAL | -0.100 |
SEX | -0.013 |
EDUCATION | 0.037 |
MARRIAGE | -0.039 |
AGE | 0.020 |
PAY_1 | 0.293 |
PAY_2 | 0.220 |
PAY_3 | 0.203 |
PAY_4 | 0.175 |
PAY_5 | 0.172 |
PAY_6 | 0.140 |
BILL_AMT1 | -0.004 |
BILL_AMT2 | 0.000 |
BILL_AMT3 | 0.001 |
BILL_AMT4 | 0.004 |
BILL_AMT5 | 0.001 |
BILL_AMT6 | 0.003 |
PAY_AMT1 | -0.078 |
PAY_AMT2 | -0.081 |
PAY_AMT3 | -0.039 |
PAY_AMT4 | -0.066 |
PAY_AMT5 | -0.037 |
PAY_AMT6 | -0.049 |
在進行變數處理時,可選擇歸一化、標準化、特徵化處理,也可根據變數大小進行類別化處理。LIMIT_BAL數值較大,求其百分位數,使用函式np.percentile(LIMIT_BAL),對變數進行重新設定,選擇分位數80,50,30,0對應的值設定為(4,3,2,1)。
Percentile | Value |
100 | 1000000 |
90 | 360000 |
80 | 270000 |
70 | 210000 |
60 | 180000 |
50 | 140000 |
40 | 100000 |
30 | 70000 |
20 | 50000 |
10 | 30000 |
0 | 10000 |
首先我們來驗證逐步增加變數的方法。首先選取LIMIT_BAL、PAY_1、PAY_2、PAY_3、PAY_4、PAY_5、PAY_6以及常量係數。
相關推薦
信用卡違約客戶的預測模型的選擇(二)驗證過程
驗證過程該資料集包含23個輸入變數(input variable)和一個響應變數(response variable)。該資料集來源於UCI machine learning repository,為某銀行的信用卡客戶資訊資料,共有30000個樣本,包括過去六個月的賬單還款情
Java內存模型(二)——重排序
序列 依賴性 種類 如果 禁止 加載 runtime 屬於 style 一、重排序 重排序是指為了提高程序的執行效率,編譯器和處理器常常會對語句的執行順序或者指令的執行順序進行重排。 編譯器優化的重排序:編譯器在不改變單線程程序語義的前提下,可以重新安排語句的執行順序
NLP —— 圖模型(二)條件隨機場(Conditional random field,CRF)
而在 mar 依賴 alt strong $$ href 否則 block 本文簡單整理了以下內容: (一)馬爾可夫隨機場(Markov random field,無向圖模型)簡單回顧 (二)條件隨機場(Conditional rand
並發模型(二)——Master-Worker模式
string 程序 分配任務 之一 size void con .exe || Master-Worker模式是常用的並行模式之一,它的核心思想是,系統有兩個進程協作工作:Master進程,負責接收和分配任務;Worker進程,負責處理子任務。當Worker進程將子任
CAS客戶端整合(二) Zabbix
接口 bus markdown init else default function https ssl Zabbix是一個強大的服務器/交換機監控應用,有zabbix-server, zabbix-client, zabbix-web 三部分。zabbix-web管理端
Django中模型(二)
for 唯一值 校驗 允許 小數 如果 git ade 字符長度 Django中模型(二) 三、定義模型 1、模型、屬性、表、字段間的關系: 一個模型類在數據庫中對應一張表;在模型類中定義的屬性,對應該模型對照表中的字段。 2、定義屬性 A、概述
java內存模型(二)深入理解java內存模型的系列好文
總結 nal href ola down 深入理解 ati markdown vol 深入理解java內存模型(一)——基礎深入理解java內存模型(二)——重排序深入理解java內存模型(三)——順序一致性深入理解java內存模型(四)——volatile深入理解java
分層網絡模型(二)
就是 發送數據 求根 assigned BE ber main 另一個 google 傳輸層,將數據以包的方式進行發送並且保存,直到收到確認後才將保存的數據丟棄,否則再次將保存的數據進行發送,即提供數據傳輸的服務。TCP協議就是提供可靠的數據傳輸。 網際互聯層關心的是
Webgl顯示Revit模型(二)——利用Three.js優化顯示效果
Webgl顯示Revit模型(一)請見: https://blog.csdn.net/niuge8905/article/details/80044802 Three.js已經算是開發webgl最常用的開源庫了。Autodesk團隊開源了一個va3c來在web端顯示revit,但是這個更
線性分類模型(二):logistic迴歸模型分析
前言 上一篇文章介紹了線性判別模型,本文介紹線性生成模型——logistic迴歸模型。本文介紹logstic迴歸模型相關的知識,為了更好理解模型的決策邊界函式,本文同時分析了多元變數的協方差對概率分佈的影響。 目錄 1、logistic迴歸模型的含義 2、l
【Mac系統 + Python + Django】之開發一個釋出會系統【Django模型(二)】 【Mac系統 + Mysql】之安裝Mysql資料庫 【Python + Mysql】之用pymysql庫連線Mysql資料庫並進行增刪改查操作
上一部分給大家介紹Django的檢視。 接下來繼續來了解Django框架,來看第二部分,此部分是對資料庫的操作。 目錄: 一、設計系統表 二、admin後臺管理 三、基本資料訪問(SQLite資料庫) 四、Django配置MySQL &
併發模型(二)——Master-Worker模式
Master-Worker模式是常用的並行模式之一,它的核心思想是,系統有兩個程序協作工作:Master程序,負責接收和分配任務;Worker程序,負責處理子任務。當Worker程序將子任務處理完成後,結果返回給Master程序,由Master程序做歸納彙總,最後得到最
Django-模型(二)
條件查詢 欄位查詢 實現sql中where的功能,呼叫過濾器filter()、exclude()、get(),下面以filter()為例。 通過"屬性名_id"表示外來鍵對應物件的id值。 語法如下: 說明:屬性名稱和比較運算子間使用兩個下劃線,所以屬性名不能包括多個下劃線。 屬性
前端學習筆記 day03 盒子模型(二)
1. 搜尋趣圖框的製作 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Document</title> &
JVM類載入器與雙親委派模型(二)
(7)URLClassLoader類 前面說到,ClassLoader這個頂級父類只是定義好了雙親委派模型的工作機制;但是ClassLoader是個抽象類,無法直接建立物件,所以需要由繼承它的子類完成建立物件的任務。子類需要自己實現findClass方法,並且在例項化時指定parent屬性的值
統計學(二)之一般線性模型(二)
接上文 方差分析的適用條件 各樣本的獨立性:保證變異的可加性(嚴格要求); 正態性:各單元的殘差必須服從正態分佈(要求不是明顯偏態); 方差齊次:各單元格滿足方差齊次(變異的程度相同); 多因素方差分析 在實際問題中,經常需要同時研究多個因素對因變數
達觀杯_構建模型(二)邏輯迴歸
特徵:tfidf(word+article) """ 1.特徵:tfidf(word+article) 2.模型:lr 3.引數:C=120 """ import pandas as pd import pickle from sklearn.linear_m
機房收費系統登陸客戶端錯誤(二)執行時錯誤“-2147217887”
解決了執行錯誤91之後可能還會出現這個錯誤,如圖: 什麼是OLE DB?OLEDB是微軟的戰略性的通向不同的資料來源的低階應用程式介面。OLE DB不僅包括微軟資助的標準資料介面開放資料庫連通性(ODBC)的結構化查詢語言(SQL)能力,還具有面向其他非SQL
JVM記憶體模型(二)—— HotSpot虛擬機器分析
上一節我們講了Java虛擬機器的理論記憶體模型,同時我們也提到了,這些只是Java虛擬機器規範中的內容,如果我們要研究一個物件是如何建立、如何佈局等一系列細節問題的時候,我們就必須在具體的虛擬機器中分析,因為不同的虛擬機器的實現是不一樣的,下面我們就選最常用、最普遍的虛擬機器
JVM——記憶體模型(二):虛擬機器棧與本地方法棧
本篇文章將繼續認識Java虛擬機器中的記憶體模型,今天要認識的是我們常說的"棧”。 棧其實也分兩種,一種是虛擬機器棧,一種是本地方法棧。而我們平常說的最多的,就是虛擬機器棧。接下來就讓我們走進這兩個棧,看看他們是個啥。 1.虛擬機器棧 虛擬機器棧,即Java Virtual&n