使用Kaggle中的Loan Prediction Problem DataSet 数据集
数据集链接:贷款预测问题数据集 (kaggle.com)
对申请人的各项情况进行综合评估最后判断是否可以贷款
相关库引入
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
#sns 可以进行一些数据关系处理发掘,本文中用于绘制热点图,观测数据间的相关性
import seaborn as sns
#使用sklearn中的逻辑回归功能
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
数据导入及预处理
# 导入数据
full_data = pd.read_csv('data/train.csv')
#Loan_ID列无用途直接去除
full_data=full_data.drop('Loan_ID',axis='columns')
#查看数据情况,可以发现有缺失值,需要处理。
#print(full_data.info())
#Self_employed=full_data['Self_Employed'].value_counts(normalize=True)
#查看其中一些数据的状态并绘制,记得绘制完想显示需要plt.show()函数
'''
print(Self_employed)
Self_employed.plot.bar(title='Self_Employed')
plt.show()
'''
#数据处理,将其中一些布尔量转化为可量化数值,逻辑回归以及后续热点图绘制需要数据处理
full_data['Gender'].replace(('Female','Male'),(0,1),inplace=True)
full_data['Married'].replace(('No','Yes'),(0,1),inplace=True)
full_data['Dependents'].replace(('0', '1', '2', '3+'),(0, 1, 2, 3),inplace=True)
full_data['Education'].replace(('Not Graduate', 'Graduate'),(0, 1),inplace=True)
full_data['Self_Employed'].replace(('No','Yes'),(0,1),inplace=True)
full_data['Property_Area'].replace(('Semiurban','Urban','Rural'),(0,1,2),inplace=True)
#以下函数可绘制热点图,查看数据间的相关性关系
'''
matrix = full_data.corr()
f, ax = plt.subplots(figsize=(10,10))
sns.heatmap(matrix,vmax=.8, square=True,cmap="BuPu",annot=True);
plt.show()
'''
#数据空缺值填补
full_data['Gender'].fillna(full_data['Gender'].value_counts().idxmax(), inplace=True)
#表示用这一列中的众数来填补空缺值
full_data['Married'].fillna(full_data['Married'].value_counts().idxmax(), inplace=True)
full_data['Dependents'].fillna(full_data['Dependents'].value_counts().idxmax(), inplace=True)
full_data['Self_Employed'].fillna(full_data['Self_Employed'].value_counts().idxmax(), inplace=True)
full_data["LoanAmount"].fillna(full_data["LoanAmount"].mean(skipna=True), inplace=True)
#表示用这一列的平均数来填补空缺值
full_data['Loan_Amount_Term'].fillna(full_data['Loan_Amount_Term'].value_counts().idxmax(), inplace=True)
full_data['Credit_History'].fillna(full_data['Credit_History'].value_counts().idxmax(), inplace=True)
模型数据准备及模型训练
#准备训练集的数据及标签
y = full_data['Loan_Status']
X = full_data.drop('Loan_Status',axis='columns')
#导入sklearn中的逻辑回归模型
model = LogisticRegression()
model.fit(X, y)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,
penalty='l2', random_state=None, solver='liblinear', tol=0.0001,
verbose=0, warm_start=False)
像上述处理训练集数据一样对测试集数据进行处理以及空缺值补齐。
在测试集上查看验证训练结果
pred_cv = model.predict(X_test)
print(pred_cv)
结果如下: