这是一个监督学习求解最大利润的题目。给很多人去放款贷款,目的是预测这些贷款的人会不会还款;如果还,标签为1,说明银行预测正确,可以得到利润;如果不还,标签为0,银行不可以得到利润。模型预测之后,和真实的标签去对比,评估模型的好坏。
这道题牵扯到了比kaggle(一)更多的属性特征和样本数,(二)更多的数据清洗操作;(三)模型评估指标的应用。
# coding: utf-8
import pandas as pd
load_2007 = pd.read_csv("LoanStats3a.csv",skiprows=1) #读取文件
len(load_2007) #查看有多少row,行数
load_2007.shape #查看数组的二维特征,(rows,columns)
print(load_2007.shape[0]) #(rows)
print(load_2007.shape[1]) #(columns)
#删除缺失值 根据缺失值占总样本数多少的删除掉 缺失率
#当删除行时,axis = 0, 如果这一个样本有一半的特征都没有数据。
#当删除特征时,axis = 1,如果这一个特征有一半的样本都没有数据。
#设定阈值
half_count_column = int(load_2007.shape[0]/2) #计算一半的样本个数
half_count_row = int(load_2007.shape[1]/2) #计算一半的属性个数
print(half_count_column)
load_2007 = load_2007.dropna(thresh=half_count,axis = 1) #保留column的数据,如果column至少有一半不等于na,axis=1按照column取
load_2007.shape
load_2007 = load_2007.drop(['desc','url'],axis = 1) #axie = 1 column, axis = 0,index
load_2007.to_csv('load_2007.csv',index = False)
print(load_2007.iloc[1,:]) #索引的用法 loc和iloc loc[row_name:row_name,column_name:column_name]根据名称切 iloc[1:2,1:2]根据index切
load_2007.columns.values #查看columns的名称,输出是一个list形式,名称为str的格式
#把一些和loans无关的去掉 drop("column_name",axis=1)
load_2007 = load_2007.drop(["id", "member_id", "funded_amnt", "funded_amnt_inv", "grade", "sub_grade", "emp_title", "issue_d"], axis=1)
load_2007 = load_2007.drop(["zip_code", "out_prncp", "out_prncp_inv", "total_pymnt", "total_pymnt_inv", "total_rec_prncp"], axis=1)
load_2007 = load_2007.drop(["total_rec_int", "total_rec_late_fee", "recoveries", "collection_recovery_fee", "last_pymnt_d", "last_pymnt_amnt"], axis=1)
load_2007.shape[1]
#pandas 计1 计算公式1
print(load_2007['loan_status'].value_counts()) #统计这个columns每个分属性的个数
#pandas 查1 #|号是或 查找公式1
load_2007 = load_2007[(load_2007['loan_status'] == "Fully Paid") | (load_2007['loan_status'] == "Charged Off")]
load_2007.shape #bool条件判断,提取某