机器学习案例实战(4)——Kaggle竞赛案例-泰=泰坦尼克号获救预测

1表格数据中显示label列0未获救,1是获救。pclass是舱位等级。姓名,性别,年龄,sibsp:兄弟姐妹个数,船票编号,父母,价位,不同的上传地点。有了这些数据进行一个二分类。
2用程序分析
使用ipython notebook比较方便可视化,便于展示。其他也可以。
pandas库是做分析处理的,先导入pandas库。pandas.read_csv(“”)把数据读进来就是一个行和列的结构,把这个赋给了一个变量titanic。通过变量调.head,即titanic.head()打印出前几行,5是默认的,想显示出几行括号中写几。
继续对titanic调describe,titanic.describe,按列统计特征,passenger总个数,均值,方差,最大值最小值。age列个数少,说明有缺省。
机器学习算法要求输入的要求是一个矩阵,有缺失值之后就做不成矩阵了。
所以需要对数据进行预处理,
第一步:对缺失值进行填充,用均值填充。fillna就是填充,就是用age均值对age列进行填充。然后再describe,看到是891个。
3机器学习不能处理string值,需要转换成int值或者float,成为机器学习可以处理的数值型的。0表示male,1表示female。
print titanic[“sex”].unique(),看这一列有几种可能性。
第二步:数值转换
titanic.loc是定位到某位置,定位到sex=male的样本。loc后边只写1表示取得是第一个样本。
对登船地点也做一个数值转换,之前提到的数值型用均值填充,这里string值用个数最多的字符填充。
数据与处理完毕!!
开始分类
预测一下船员是被获救还是没有获救,这样一个二分类。
sklearn把线性回归导入,因为求解起来比较简单。
需要对模型进行衡量,train和test。但是需要不断调参的过程,需要验证集来进行调参了,交叉验证。把训练数据集分成三份,
1+2—3
1+3—2
2+3—1 得到三个准确率,得到平均准确率,是结果趋于稳定。
用年龄 费用等7个特征进行预测。.shape得到【m,n】的二元组。shape(0)就是指定了m,即样本有多少个,把样本平均分成3份。3倍交叉验证,需要三次for循环,每次都要建立一个回归的模型。
把训练的需要的特征拿出来,即把数据拿出来;
然后把获救与否作为label值取出来,用0 1表示是否获救,与训练数据对应。
现在得到了train data 和train label,然后把变量应用到这两部分上,用fit来应用,alg这个变量之前指出了等于线性回归,再当前数据上训练这个模型。程序中表明了分为测试集和训练集。让测试数据集对训练数据集训练出的模型进行测试,预测这个test中的人是否被获救了。最后把测试结果导入到prediction中就完成了这样一个机器学习的算法。

List Conclusion

所以用了sklearn库和pandas库进行数据处理是比较简单的。处理好数据——选择好特征——选择算法—对算法进行交叉验证——最后把测试结果append(导入)进来——完成了机器学习的事情。

把测试集的结果都拿出来了,看一下效果如何。刚才的线性回归label值是从0到1的,每一个值都要拟合到[0,1]区间上,所以线性回归得到的都是一个再这个范围内的值,如何把得到的值对应到类别上呢,自己设置把>0.5的预测为1,相反预测为0.做完了类别归属后,进行模型准确率的判定。因为测试完了之后得到一堆01值,看预测的label值和给定的label值有多少时一样的。sum再除以总共预测的个数,得到准确率。(注意有些程序之前的可能会中断,需要重新运行)。70%的结果有些低表明线性回归做这个分类效果并不好。因为再线性回归中我们需要先判断回归值是小于0.5或者大于0.5,有没有一种方法可以直接给出属于哪一类的概率值呢
同时验证了***逻辑回归***一般用来做分类。效果不是很好。

随机森林模型

随机有两个意思:1,随机取样本,有放回的取样,样本有可能重复出现。
2,进行随机的特征选择,不是用到线性回归中选择的7个特征,可以指定5个特征,是从7个中随机选择的。

经常做一些参数的调节,找到最高的准确率。

**遗留问题 **
没有修改正确sklearn.cross.validation,更新后是sklearn.model.selection.。KFold函数没有正确使用,对样本进行kfold划分时不知样本总数在函数中的位置。

数据挖掘工程的特征不是很明显,先要建立特征工程提取特征,有明显的特征,也可以用自己新的特征。比如,是不是人多力量大,把兄弟姐妹和父母综合起来,算作一个新特征。

机器学习案例实战(4)——Kaggle竞赛案例-泰=泰坦尼克号获救预测

机器学习案例实战(4)——Kaggle竞赛案例-泰=泰坦尼克号获救预测

通过feature selction方法把一些不重要的特征去掉,保留重要的特征。是最后获得的准确率更高一些。
那么,考虑同时使用随机森林和逻辑回归算法是不是使得准确率上升呢,与使用一种算法唯一的不同是两种算法预测的平均。思想:把多个分类器集成在一起,达到强分类器的目的。也可以用权重的方法来对应不同的分类器,达到一个测试结果。

机器学习案例实战(4)——Kaggle竞赛案例-泰=泰坦尼克号获救预测