LogisticRegression逻辑回归模型.zip

  • sherlock290
    了解作者
  • Python
    开发工具
  • 2KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 10 积分
    下载积分
  • 1
    下载次数
  • 2021-04-16 10:19
    上传日期
利用python实现逻辑回归算法预测信用卡违约情况,使用的是海豚大数据大数据分析赛的数据
LogisticRegression逻辑回归模型.zip
  • LogisticRegression逻辑回归模型.py
    7.2KB
内容介绍
# -*- coding: utf-8 -*- """ Created on Thu Sep 10 17:07:47 2020 @author: 谢树鹏 """ import pandas as pd import matplotlib.pyplot as plt #%matplotlib inline import seaborn as sns import warnings import matplotlib warnings.filterwarnings('ignore') #警告过滤器 pd.set_option('display.max_columns',None) train_data= pd.read_csv(r'E:\文档\我的文档\大数据\题目和模板\Train.csv') train_data.rename(columns={'PAY_0':'PAY_1'},inplace= True) matplotlib.rcParams['font.sans-serif'] = ['KaiTi'] matplotlib.rcParams['font.serif'] = ['KaiTi'] sns.set_style("darkgrid",{"font.sans-serif":['KaiTi', 'Arial']}) matplotlib.rcParams['axes.unicode_minus'] = False # 解决保存图像是负号'-'显示为方块的问题,或者转换负号为字符串 #对LIMIT_BAL(信用额度)进行Bining化后再进行Factorize化 bins = [1,5,20,35,50,100]#如何分级比较好? train_data['LIMIT_BAL_bins'] = pd.cut(train_data['LIMIT_BAL'] / 10000,bins) by_bins = train_data.groupby('LIMIT_BAL_bins')['y'].mean() #print(by_bins) train_data['LIMIT_BAL_bins_id'] = pd.factorize(train_data['LIMIT_BAL_bins'])[0] train_data['LIMIT_BAL_bins_id'].unique() #对AGE进行scaling from sklearn import preprocessing scaler = preprocessing.StandardScaler() train_data['AGE'] = scaler.fit_transform(train_data['AGE'].values.reshape(-1,1)) # train_data #对BILL_AMT1到BILL_AMT6,PAY_AMT1到PAY_AMT6进行Scaling train_data['BILL_AMT1'] = scaler.fit_transform(train_data['BILL_AMT1'].values.reshape(-1,1)) train_data['BILL_AMT2'] = scaler.fit_transform(train_data['BILL_AMT2'].values.reshape(-1,1)) train_data['BILL_AMT3'] = scaler.fit_transform(train_data['BILL_AMT3'].values.reshape(-1,1)) train_data['BILL_AMT4'] = scaler.fit_transform(train_data['BILL_AMT4'].values.reshape(-1,1)) train_data['BILL_AMT5'] = scaler.fit_transform(train_data['BILL_AMT5'].values.reshape(-1,1)) train_data['BILL_AMT6'] = scaler.fit_transform(train_data['BILL_AMT6'].values.reshape(-1,1)) train_data['PAY_AMT1'] = scaler.fit_transform(train_data['PAY_AMT1'].values.reshape(-1,1)) train_data['PAY_AMT2'] = scaler.fit_transform(train_data['PAY_AMT2'].values.reshape(-1,1)) train_data['PAY_AMT3'] = scaler.fit_transform(train_data['PAY_AMT3'].values.reshape(-1,1)) train_data['PAY_AMT4'] = scaler.fit_transform(train_data['PAY_AMT4'].values.reshape(-1,1)) train_data['PAY_AMT5'] = scaler.fit_transform(train_data['PAY_AMT5'].values.reshape(-1,1)) train_data['PAY_AMT6'] = scaler.fit_transform(train_data['PAY_AMT6'].values.reshape(-1,1)) #处理测试集 test_data=pd.read_csv(r'E:\文档\我的文档\大数据\题目和模板\Test0904.csv') #先bining化 bins = [0,5,20,35,50,100] test_data['LIMIT_BAL_bins'] = pd.cut(test_data['LIMIT_BAL'] / 10000,bins) #factorize化 test_data['LIMIT_BAL_bins_id'] = pd.factorize(test_data['LIMIT_BAL_bins'])[0] #删掉LIMIT_BAL_bins列 #test_data = test_data.drop(['LIMIT_BAL_bins'],axis=1) #AGE以及BILL_AMT1到BILL_AMT6,PAY_AMT1到PAY_AMT6进行Scaling test_data['AGE'] = scaler.fit_transform(test_data['AGE'].values.reshape(-1,1)) test_data['BILL_AMT1'] = scaler.fit_transform(test_data['BILL_AMT1'].values.reshape(-1,1)) test_data['BILL_AMT2'] = scaler.fit_transform(test_data['BILL_AMT2'].values.reshape(-1,1)) test_data['BILL_AMT3'] = scaler.fit_transform(test_data['BILL_AMT3'].values.reshape(-1,1)) test_data['BILL_AMT4'] = scaler.fit_transform(test_data['BILL_AMT4'].values.reshape(-1,1)) test_data['BILL_AMT5'] = scaler.fit_transform(test_data['BILL_AMT5'].values.reshape(-1,1)) test_data['BILL_AMT6'] = scaler.fit_transform(test_data['BILL_AMT6'].values.reshape(-1,1)) test_data['PAY_AMT1'] = scaler.fit_transform(test_data['PAY_AMT1'].values.reshape(-1,1)) test_data['PAY_AMT2'] = scaler.fit_transform(test_data['PAY_AMT2'].values.reshape(-1,1)) test_data['PAY_AMT3'] = scaler.fit_transform(test_data['PAY_AMT3'].values.reshape(-1,1)) test_data['PAY_AMT4'] = scaler.fit_transform(test_data['PAY_AMT4'].values.reshape(-1,1)) test_data['PAY_AMT5'] = scaler.fit_transform(test_data['PAY_AMT5'].values.reshape(-1,1)) test_data['PAY_AMT6'] = scaler.fit_transform(test_data['PAY_AMT6'].values.reshape(-1,1)) #建模前处理 train_data_X = train_data.drop(['y'],axis=1) train_data_Y = train_data['y'] test_data_X = test_data.drop(['y'],axis=1) test_data_Y = test_data['y'] #解决clf.fit()时的浮点类型错误 train_data_X['LIMIT_BAL_bins']= pd.cut(train_data_X['LIMIT_BAL'] , 4).cat.codes test_data_X['LIMIT_BAL_bins']= pd.cut(test_data_X['LIMIT_BAL'] , 4).cat.codes #LogisticRegression(逻辑回归) #建立模型 from sklearn.linear_model import LogisticRegressionCV clf = LogisticRegressionCV( #penalty='l2',solver='lbfgs',n_jobs=2 ) clf.fit(train_data_X, train_data_Y) #模型预测与评价 from sklearn.metrics import roc_auc_score preds = clf.predict_proba(test_data_X)[:,1] print(roc_auc_score(test_data_Y, preds)) from sklearn.metrics import roc_curve, auc y_score = clf.fit(train_data_X, train_data_Y).predict_proba(test_data_X) fpr, tpr, thresholds = roc_curve(test_data_Y, y_score[:, 1]) roc_auc = auc(fpr, tpr) def drawRoc(roc_auc,fpr,tpr): plt.subplots(figsize=(7, 5.5)) plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc) plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('LogisticRegression ROC Curve') plt.legend(loc="lower right") plt.show() drawRoc(roc_auc, fpr, tpr) ''' #roc from sklearn.metrics import roc_curve, auc y_score = clf.fit(train_data_X, train_data_Y).predict_proba(test_data_X)[:,1] fpr,tpr,threshold = roc_curve(test_data_Y, y_score) roc_auc = auc(fpr,tpr) plt.figure() lw = 2 plt.figure(figsize=(10,10)) plt.plot(fpr, tpr, color='darkorange', lw=lw, label='ROC curve (area = %0.2f)' % roc_auc) ###假正率为横坐标,真正率为纵坐标做曲线 plt.plot([0, 1], [0, 1], color='navy', lw=lw, linestyle='--') plt.xlim([0.0, 1.0]) plt.ylim([0.0, 1.05]) plt.xlabel('False Positive Rate') plt.ylabel('True Positive Rate') plt.title('Receiver operating characteristic example') plt.legend(loc="lower right") plt.show() ''' ''' #输出结果 test_data_ID = test_data['ID'] test_data_ID = pd.DataFrame(test_data_ID) test_proba=pd.DataFrame(preds) test_proba.columns=['proba'] test_target = pd.DataFrame(test_data_Y) test_target.columns = ['target'] test_re = pd.concat([test_data_ID,test_proba,test_target],axis=1) test_re.to_csv("test_LogisticRegression.csv",index=False,sep=',') ''' test_data_ID = test_data['ID'] test_data_ID = pd.DataFrame(test_data_ID) test_proba=pd.DataFrame(preds) test_proba.columns=['proba'] test_re = pd.concat([test_data_ID,test_proba],axis=1) ''' #test_target = pd.DataFrame(test_data_Y) #test_target.columns = ['target'] #test_re = pd.concat([test_data_ID,test_proba,test_target],axis=1) ''' test_target = test_proba test_target[(test_target <= 0.5)] = 0 test_target[(test_target > 0.5)] = 1 test_target.columns=['target'] test_re = pd.concat([test_re,test_target],axis=1) test_re.to_csv("测试test_RandomForest0904.csv",index=False,sep=',')
评论
    相关推荐
    • M12_Challenge_Submission:KonradK的UCBx FinTech“ Module_12_Challen
      使用原始数据创建逻辑回归模型 使用重新采样的训练数据预测Logistic回归模型 将数据分为训练集和测试集 打开入门代码笔记本,然后使用它来完成以下步骤。 从Resources文件夹中读取lending_data.csv数据到Pandas ...
    • Predicting-Credit-Score:在这个数据科学项目中,您将通过建立信用评分预测模型来预测借款人违约的机会
      预测信用评分 在这个数据科学项目中,我们...逻辑回归 支持向量机 人工神经网络 在该项目使用的五种技术中,发现人工神经网络具有82%的最高精度。 数据集: Credit_Scoring.csv 多合一笔记本: Credit_Scoring.ipynb
    • 家庭作业-分类
      冒险生意 背景 抵押贷款,学生贷款和汽车贷款以及债务合并只是...使用库对LendingClub数据进行重新采样,并使用重新采样的数据构建和评估逻辑回归分类器。 你需要: 使用Naive Random Oversampler和SMOTE算法对数据进
    • breast-cancer-logistic-regression
      该笔记本的目的是通过在实际数据集上应用逻辑回归模型来检测乳腺癌,并根据其特征预测肿瘤是良性的(不是乳腺癌)还是恶性的(乳腺癌)。 Logistic回归可以使用比值比确定乳腺癌的重要预测因子,并生成置信区间,为...
    • Credit_Risk_Analysis
      信用风险分析 贷款预测风险分析概述: 此信用风险分析项目的目的是评估... 总体而言,尽管测试似乎有些准确,但我不建议将其用作主要工具,因为欠采样和重采样都不会对我们的分析逻辑回归模型造成整体上的重大变化。
    • Credit_Risk_Analysis
      然后,我对每种采样方法进行了逻辑回归测试。 之后,我还运行了RandomForest分类器和EasyEnsemble分类器,总共进行了六个测试。 结果 过采样方法 这些方法中的每一种都试图增加少数群体的高风险,以使测试更加公平...
    • machine_learning
      单元11-风险业务 背景 抵押贷款,学生贷款和汽车贷款以及债务...使用库对LendingClub数据进行重新采样,并使用重新采样的数据构建和评估逻辑回归分类器。 开始: 将CSV读取到DataFrame中。 将数据分为训练和测试集。
    • Credit_Risk_Analysis:提取贷款俱乐部提供的数据,并将其转换为可用于预测模型的数据
      天真的随机过采样逻辑回归 平衡准确度得分:0.641 精度:0.01 召回率:0.65 SMOTE过采样逻辑回归 平衡准确度得分:0.663 精度:0.01 召回率:0.63 聚类质心欠采样逻辑回归 平衡准确度得分:0.545 精度:0.01 ...
    • matlab实现逻辑回归梯度下降计算信用卡违约
      matlab实现逻辑回归梯度下降实现信用卡违约预测,社会媒体挖掘实验成果,代码简单带注释,附操作图
    • matlabcnhelp.rar
      matlab中文帮助很难找的,快速下载