新手可以上天池或者是kaggle上下载数据,我就是在天池上的学习赛找模型进行学习的。
当我们拿到一个csv后,就要审视这个文档里的数据。我现在在做的模型就是有关客户贷款违约的一个比赛吧。那么首先要导入这个数据啊,这个csv分为两个数据集,一个是train,另外两个是test,就是说这个这个比赛的意义就是通过训练集的训练(训练集的数据量是很大的)然后将调教好的模型用于测试集,分数越高越好。
附上链接
零基础入门金融风控-贷款违约预测相关的问题-天池大赛-阿里云天池
拿到数据后呢,我们首先要审视一下数据,至于task2提到的数据可视化,我的指导老师认为,在实际的商业案例中,用来做ppt的,你再开始建模的时候呢,完全不用管好了。首先是导入数据。这边导入数据是要用到一些包的,上午我看到一文章说,现在都爱pandas,产生的是dataframe(一个矩阵形式,有行有列)。好,那我们就要把它从本地文件导入到jupyter里面,其实导入到python里,这里代码这样写
train = pd.read_csv('C:\\Users\harrison.huang\\Desktop\\train (1).csv')
pd是包pandas的简写。记住是双斜杠,如果单斜杠不行的话。
ok,接下来,这些数据,比如说有些位置他是没有值的,就好像你的数据存在收集不到,或者是说误删了怎么样。那么你要宏观的了解一下那些数据缺失了。数值特征就是说数值,对象特征就是说以包含了其他的字符。这里我们要分开这两个数据。类别型也是对象型特征。
numerical_fea = list(train.select_dtypes(exclude=['object']).columns)
category_fea = list(filter(lambda x: x not in numerical_fea,list(train.columns)))
运行完这个命令之后就可以将类别型变量和数值型变量分别开了。
1、熵值法建模:不需要类别型变量,那就清除
代码:data.drop(category_fea)。所以清除函数drop()。
比赛数据相比真实场景的数据相对要干净一些,现实场景中,例如你从银行收到数据,但是你会发现很多数据都是大片大片缺失的,在这种情况下,就要认真考虑数据值如何填充的问题了,比如说,如果是时间序列的一个数据(股价),那么现在的价格就很大程度上受到了上一时期数据的影响,因此,可以使用上面一格的数据直接填充。那么对于横截面数据,可以观察这个数据的分布。如果是呈正态分布的,那么就可以取中位数或者平均数。
在补充缺失值之前,我们需要将缺失值太多的列直接删去,一般缺失值大于百分之50的列,以及全部都是一样的值的列,就都可以删去了,因为没有什么太大的意义。
删除列的代码:
def remcolumns(data):
t = int(0.5*data.shape[0])
data = data.dropna(thresh=t,axis=1)#保留至少含有百分之50数据的列
#data = data.l