邏輯回歸實現客戶逾期分析

2021-09-01 00:18:42 字數 3619 閱讀 6801

構建邏輯回歸模型進行**使用者是否逾期

首先,由於資料中存在缺失值,因此需要對缺失值資料進行預處理。

其次,對明顯與模型無關的特徵進行刪除

最後,採用邏輯回歸模型進行模型訓練。

資料:金融資料

任務:我們要做的是**貸款使用者是否會逾期,

標籤說明:**中,status是標籤:0表示未逾期,1表示逾期。

一共4754行,89列(除去首行、首列)

特徵轉換:特徵student_feature列的na轉為0,2轉為0(2只有2個)

幾個需考慮的因素

城市:境外0,一線1,二線2,三線3,四線4,na及其他(共4組資料,刪除)

現階段不進行處理而直接刪除的列:比如 first_transaction_time,latest_query_time,loans_latest_time

**部分由yezuolin完成

1、調包、匯入資料以及資料替換

# coding=utf-8

"""1. 導包"""

import pandas as pd

from sklearn.model_selection import train_test_split

from sklearn.linear_model import logisticregression

from sklearn.metrics import f1_score,r2_score

"""2. 讀取資料"""

dataset = pd.read_csv('./data/data.csv',encoding='gbk')

"""3. 資料處理"""

# 刪除固定資訊列

dataset = dataset.drop(["custid","trade_no","bank_card_no","id_name","first_transaction_time","latest_query_time","loans_latest_time","source"],axis=1)

# 對於sstudent_feature列,我們進行nan轉成0,2轉為0

# 缺失值填充

dataset["student_feature"] = dataset["student_feature"].fillna(0)

# 2替換為0

dataset["student_feature"] = dataset["student_feature"].replace([2],[0])

# 針對城市列'reg_preference_for_trad',進行資料替換

dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("一線城市", "1")

dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("二線城市", "2")

dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("三線城市", "3")

dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("其他城市", "4")

dataset["reg_preference_for_trad"] = dataset["reg_preference_for_trad"].replace("境外", "0")

2、填充缺失值

# 填充其他空值

# 使用均值進行填充

# dataset.fillna(dataset.mean(), inplace=true)

# 使用眾數進行填充

dataset = dataset.fillna(0) # 使用 0 替換所有 nan 的值

col = dataset.columns.tolist()[1:]

def missing(df, columns):

"""使用眾數填充缺失值

df[i].mode()[0] 獲取眾數第乙個值

"""col = columns

for i in col:

df[i].fillna(df[i].mode()[0], inplace=true)

df[i] = df[i].astype('float')

missing(dataset, col)

# 將object型別轉成folat

dataset = dataset.convert_objects(convert_numeric=true)

3、資料劃分

x = dataset.drop(["status"],axis=1)

y = dataset["status"]

# 資料按正常的2、8劃分

x_train, x_test, y_train, y_test = train_test_split(x, y,test_size=0.2, random_state=666)

# not enough values to unpack (expected 4, got 2)

from sklearn.preprocessing import minmax_scale # minmax_scale歸一化,縮放到0-1

x_train = minmax_scale(x_train)

x_test = minmax_scale(x_test)

# input contains nan, infinity or a value too large for dtype('float64').

4、資料歸一化

from sklearn.preprocessing import minmax_scale

# 歸一化,縮放到0-1

x_train = minmax_scale(x_train)

x_test = minmax_scale(x_test)

5、模型訓練

log_reg = logisticregression()

log_reg.fit(x_train, y_train)

y_predict = log_reg.predict(x_test)

6、輸出結果

print("predict:",log_reg.score(x_test, y_test))

print("f1_score:",f1_score(y_test, y_predict))

print("r2_score:",r2_score(y_test, y_predict))

1、對特徵工程的分析不夠深入,在特徵選擇上還可以更詳細更優化

2、在用均值填充nan時,進行歸一化出現了 input contains nan, infinity or a value too large for dtype(『float64』),在使用眾數填充後避免了這個問題。

3、劃分訓練集和測試集時可以選擇不同的比例和次數重複進行幾次,這樣得到的結果更具有統計意義。

Python 邏輯回歸分析

以某銀行貸款拖欠率資料進行邏輯回歸建模,資料示例如下 特徵篩選 本例採用穩定性選擇方法中的隨機邏輯回歸 建立模型 利用篩選後的特徵建立邏輯回歸模型 輸出平均正確率 coding utf 8 邏輯回歸 自動建模 import pandas as pd 引數初始化 filename data bankl...

機器學習 邏輯回歸 Python實現邏輯回歸

coding utf 8 author 蔚藍的天空tom import numpy as np import os import matplotlib.pyplot as plt from sklearn.datasets import make blobs global variable path...

Tensorflow實現邏輯回歸

import tensorflow as tf 匯入mnist資料集 from tensorflow.examples.tutorials.mnist import input data mnist input data.read data sets temp data one hot true 定...