Python--KNN(K近邻)模型

KNN模型在信贷风控中的运用

结论:不是很适用
原因:对于贷后有表现客户,坏客户量相对较少,使用K邻近算法,大部分坏客户也会被预测为好客户(好客户着实太多了,1个坏客户身边可能有20个好客户)
以下案例,虽然预测准确率为97%,但是把所有客户都预测为了好客户。(坏客户占比2%左右,量少)
import pandas as pd
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split# 数据划分
from sklearn.neighbors import KNeighborsClassifier #KNN模型
from sklearn.preprocessing import StandardScaler #数据标准化

#1、数据读入
data=pd.read_csv(r'C:/Users/Administrator.20170801-163855/Desktop/20200424/erp.csv',encoding='gb18030')

#2、数据预处理
#a.异常数据过滤
datas=data.replace("?",np.nan)
datas=datas.dropna(how='any')

#b.查看数据格式
datas.dtypes
datas.info()

#3、离散型变量重新编码
for  feature in datas.columns:
    if datas[feature].dtype=='object':
        datas[feature]=pd.Categorical(datas[feature]).codes
        
#4、删除不相关变量
datas.columns
datas.drop(['month_release','quarter_release','transport_id','CONTRACT_ID','num','amt_contract', 'month_release','quarter_release', 'od30_bal_plus'],axis=1,inplace=True)
data=round(data,2)#小数位保持两位    

#5、数据拆分
X_train, X_test, y_train, y_test = train_test_split(datas, datas['od30_n_plus'],train_size = 0.75,random_state = 1234)

#6、特征工程
std=StandardScaler()
# 对训练集和测试集的特征值进行标准化
X_train = std.fit_transform(X_train)# 训练正则化模型,并将训练数据归一化操作
X_test=std.transform(X_test)# 使用训练好的模型(训练集fit好的均值及标准差)对测试数据进行归一化操作,保持两者口径统一

# 7、进行K近邻算法的算法流程
knn = KNeighborsClassifier(n_neighbors=20, algorithm='kd_tree', weights='distance')  # 使用的是KD树,权重是按距离算的
# 填充训练集的数据 fit()
knn.fit(X_train, y_train) 

#8、模型预测
knn_y_predict = knn.predict(X_test)
knn_r_test = knn.score(X_test, y_test)
print("KNN算法训练上R值(测试集上准确率):%.2f" % knn_r_test)


#####结果:虽然准确率为97%,但是竟然全部预测为坏客户。主要原因是坏客户占比少之有少。K近邻都是好客户。所以不建议使用此模型##############################
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值