3 机器学习系列_逻辑回归应用之Kaggle泰坦尼克之灾( 二 )


View Code
各属性与生存率进行关联:
eg:舱位和性别与存活率的关系:利用中的函数

3  机器学习系列_逻辑回归应用之Kaggle泰坦尼克之灾

文章插图
Pclass_Gender_grouped=dt_train_p.groupby(['Sex','Pclass'])#按照性别和舱位分组聚合PG_Survival_Rate=(Pclass_Gender_grouped.sum()/Pclass_Gender_grouped.count())['Survived']#计算存活率x=np.array([1,2,3])width=0.3plt.bar(x-width,PG_Survival_Rate.female,width,color='r')plt.bar(x,PG_Survival_Rate.male,width,color='b')plt.title('Survival Rate by Gender and Pclass')plt.xlabel('Pclass')plt.ylabel('Survival Rate')plt.xticks([1,2,3])plt.yticks(np.arange(0.0, 1.1, 0.1))plt.grid(True,linestyle='-',color='0.7')plt.legend(['Female','Male'])plt.show()#画图
View Code
3  机器学习系列_逻辑回归应用之Kaggle泰坦尼克之灾

文章插图
可以看到,不管是几等舱位,都是女士的存活率远高于男士 。
将连续性数据年龄分段后,画不同年龄段的分布以及存活率:
age_train_p=dt_train_p[~np.isnan(dt_train_p['Age'])]#去除年龄数据中的NaNages=np.arange(0,85,5)#0~85岁,每5岁一段(年龄最大80岁)age_cut=pd.cut(age_train_p.Age,ages)age_cut_grouped=age_train_p.groupby(age_cut)age_Survival_Rate=(age_cut_grouped.sum()/age_cut_grouped.count())['Survived']#计算每年龄段的存活率age_count=age_cut_grouped.count()['Survived']#计算每年龄段的总人数 ax1=age_count.plot(kind='bar')ax2=ax1.twinx()#使两者共用X轴ax2.plot(age_Survival_Rate.values,color='r')ax1.set_xlabel('Age')ax1.set_ylabel('Number')ax2.set_ylabel('Survival Rate')plt.title('Survival Rate by Age')plt.grid(True,linestyle='-',color='0.7')plt.show()
View Code
3  机器学习系列_逻辑回归应用之Kaggle泰坦尼克之灾

文章插图
可以看到年龄主要在15~50岁左右,65~80岁死亡率较高,后面80岁存活率高是因为只有1人 。
Parch、SibSp取值少,分布不均匀,不适合作为连续值来处理 。可以将其分段化 。这里分析一下Parch和SibSp与生存的关联性
from sklearn.feature_selection import chi2print("Parch:", chi2(train_data.filter(["Parch"]), train_data['Survived']))print("SibSp:", chi2(train_data.filter(["SibSp"]), train_data['Survived']))# chi2(X,y)X.shape(n_samples, n_features_in)y.shape(n_samples,)# 返回 chi2 和 pval,chi2值描述了自变量与因变量之间的相关程度:chi2值越大,相关程度也越大,# http://guoze.me/2015/09/07/chi-square/# 可以看到Parch比SibSp的卡方校验取值大,p-value小,相关性更强 。
4)数据预处理:
3  机器学习系列_逻辑回归应用之Kaggle泰坦尼克之灾

文章插图
舍掉
为类目属性,3类 。本身有序的,暂时不进行dummy
Name 为文本属性,舍掉,暂时不考虑
Sex为类目属性,2类 。本身无序,进行dummy
Age为连续属性,确实较多可以用均值填充 。幅度变化大 。可以将其以5岁为step进行离散化或利用将其归一化到[-1,1]之间
【3机器学习系列_逻辑回归应用之Kaggle泰坦尼克之灾】SibSp为连续属性,但比较离散,不适合按照连续值处理,暂时不用处理 。或者可以按照其数量>3和