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

入门,开始机器学习应用之旅 。
参看一些入门的博客,感觉,需要熟练掌握,同时也学到了一些很有用的,包括数据分析和机器学习的知识点 。下面记录一些有趣的数据分析方法和一个自己撸的小程序 。
1.
1) ():数据的特征属性,包括数据缺失情况和数据类型 。
df.(): 数据中各个特征的数目,缺失值为NaN,以及数值型数据的一些分布情况,而类目型数据看不到 。
缺失数据处理:缺失的样本占总数比例极高,则直接舍弃;缺失样本适中,若为非连续性特征则将NaN作为一个新类别加到类别特征中(0/1化),若为连续性特征可以将其离散化后把NaN作为新类别加入,或用平均值填充 。
2)数据分析方法:将特征分为连续性数据:年龄、票价、亲人数目;类目数据:生存与否、性别、等级、港口;文本类数据:姓名、票名、客舱名
3)数据分析技巧(画图、求相关性)
类目特征分布图&&特征与生存情况关联柱状图:
fig1 = plt.figure(figsize=(12,10))# 设定大尺寸后使得图像标注不重叠fig1.set(alpha=0.2)# 设定图表颜色alpha参数plt.subplot2grid((2,3),(0,0))# 在一张大图里分列几个小图data_train.Survived.value_counts().plot(kind='bar')# 柱状图plt.title(u"获救情况 (1为获救)") # 标题plt.ylabel(u"人数")plt.subplot2grid((2,3),(0,1))data_train.Pclass.value_counts().plot(kind="bar")plt.ylabel(u"人数")plt.title(u"乘客等级分布")plt.subplot2grid((2,3),(0,2))plt.scatter(data_train.Survived, data_train.Age)plt.ylabel(u"年龄")# 设定纵坐标名称plt.grid(b=True, which='major', axis='y')plt.title(u"按年龄看获救分布 (1为获救)")plt.subplot2grid((2,3),(1,0), colspan=2)data_train.Age[data_train.Pclass == 1].plot(kind='kde')data_train.Age[data_train.Pclass == 2].plot(kind='kde')data_train.Age[data_train.Pclass == 3].plot(kind='kde')plt.xlabel(u"年龄")# plots an axis lableplt.ylabel(u"密度")plt.title(u"各等级的乘客年龄分布")plt.legend((u'头等舱', u'2等舱',u'3等舱'),loc='best') # sets our legend for our graph.
View Code

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

文章插图

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

文章插图
以上为3种在一张画布实现多张图的画法:
ax1 = plt.subplot2grid((3,3), (0,0), colspan=3)ax2 = plt.subplot2grid((3,3), (1,0), colspan=2)ax3 = plt.subplot2grid((3,3), (1, 2), rowspan=2)ax4 = plt.subplot2grid((3,3), (2, 0))ax5 = plt.subplot2grid((3,3), (2, 1))plt.suptitle("subplot2grid")
View Code
3  机器学习系列_逻辑回归应用之Kaggle泰坦尼克之灾

文章插图

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

文章插图
此外,还有两种方法等效:
f=plt.figure()ax=fig.add_subplot(111)ax.plot(x,y)plt.figure()plt.subplot(111)plt.plot(x,y)
View Code
连续性特征分布可以用直方图hist来实现(见上图-年龄分布直方图):
figure1 = plt.figure(figsize=(6,6))value_age = train_data['Age']value_age.hist(color='b', alpha=0.5)# 年龄分布直方图plt.xlabel(u'年龄')plt.ylabel(u'人数')plt.title(u'年龄分布直方图')
View Code
类目特征与生存关系柱状图(见上图-各乘客等级的获救情况):
fig2 = plt.figure(figsize=(6,5))fig2.set(alpha=0.2)Survived_0 = data_train.Pclass[data_train.Survived==0].value_counts()Survived_1 = data_train.Pclass[data_train.Survived==1].value_counts()df = pd.DataFrame({u'获救':Survived_1, u'未获救':Survived_0})df.plot(kind='bar', stacked=True)# stacked=False时不重叠plt.title(u"各乘客等级的获救情况")plt.xlabel(u"乘客等级")plt.ylabel(u"人数")plt.show()