最近在学习python,也看到了python在数学计算方面的优势,特别是numpy和scipy的强大,恰好看到一个数据分析的题目,想拿来练练手。开始做了之后,光顾着解决问题了,没有使用python,反而使用了SPSS来解决的。
一、数据材料
手头有的数据包括了两个csv格式的数据集,分别是6000多条的training data和2000多条的validate data
二、处理思路
1、数据清理
A、在training data中一共有14个自变量属性和2个因变量属性,其中在12个自变量属性中有5个是在validate data中不存在的,所以这5个属性可以清理掉;training data中剩下的7个属性中有2个属性列的值都是一样的,也就是说这两列属性的值不会对因变量造成影响,因此也可以清理掉。
B、在剩下的记录中,存在一些记录某些属性缺失的情况,也存在一些属性值个性化太强,这些数据也清理掉。
2、数据转换
A、在training data剩下分析的属性中,有两列的取值是枚举类型的,且是字符串,因此可以将这些值进行数值化转换。
B、再观察剩下的数据,发现列与列之间的大小差异太大,因此需要进行归一化处理。通常的归一化处理函数包括以下三种:
线性归一化函数:y=(x - min)/(max-min),但是这种归一化函数不是一个等价平移变化,因为不能保证validate data中的min和max也在此范围内。
底数函数归一化:y=log10(x),这种要求x的取值范围都大于0
反正切归一化:y=atan(x)*2/pi,这个是我使用的归一化函数。
3、回归拟合
A、因为是多个变量,因此首先想到的是多因子线性回归,使用SPSS很容易做到这点,但是做出来效果不是很多,R为0.330。在进行多因子线性拟合的时候,也尝试过进入、逐步、删除、向后、向前等方式,得出来的R值都没有大于0.330的,大多数都是在0.328~0.329之间变换。
B、也观察过数据,尝试看看数据之间有没有相关性,但是无论是皮尔森相关性还是sig单测,都没有看出来有强相关性,相关性矩阵的数值都是在0.4以下。
三、其他思路
一个新手,我能想到的都想到了,基本上是Google着SPSS使用指南和统计学理论来做的,非线性回归太难,无从下手,现在想想,还剩下的思路就是在数据清洗的时候,清理的粒度不够大。可以找个时间再清洗一下,去掉一下噪点试试。