[kaggle竞赛实践3] Titanic幸存预测问题--朴素贝叶斯解决方法

这次我们使用朴素贝叶斯的方法来解决这个问题,我的这个方法还是没有得很高的分数,74.641,归根可能是标量数据处理不够到位,因此瓶颈总是过不去,不是朴素贝叶斯算法的问题。

贝叶斯通过先验概率和最大似然概率去估计事件出现的可能性。
  P(存活与否 | 基本条件)*P(基本条件)=P( 基本条件|存活与否 )*P(存活与否 )

  对式子进行化简
  P(存活与否 | 多组条件)=P( 多组条件|存活与否)*存活率   (如果各个条件相互独立存在,那么有如下的推论)
                                       =P(条件1|存活)*P(条件2|存活)*...*P(条件n|存活)*存活率

       于是,我们的任务就转换为分别使用幸存者和死亡者的数据,分别计算各个特征的存活率和死亡率。

然后根据测试样本具备的特征组,将各个特征乘起来,就可以得到具备这组条件的人的p(多组条件|存活)和p(多组条件|死亡) 最大似然概率,然后各自分别和先验概率:整体存活率和整体的死亡率相乘,计算具备这组条件生还和死亡的最终概率。比较下面两个概率那个大,判断生死。

       P(基本条件|死亡) *p(整体死亡率)            P(基本条件|存活) *p(整体存活率)

      那个更大,我们就预测那个可能性更大。


数据处理和朴素贝叶斯py

# -*- coding: utf-8 -*-
'''
Created on Oct 12, 2010
Decision Tree Source Code for Machine Learning in Action Ch. 3
@author: Peter Harrington
'''
from math import log
import operator
import numpy as np
from numpy import *
import pandas as pd
from kaggleJudge import *
import kaggleJudge as kj
import treePlotter as tp
import random
import scipy as sp


def cleanData(dataframe):
    df=dataframe
            
    #判断字段的空值状况,自动化
    df.isnull().sum()  #通过判断为空的数量,来判断为空的数目,其中False=0,True=1嘛

    #整理字段
    df['Gender']=df['Sex'].map({'male':0,'female':1}).astype(int)
    df=df.drop(['Cabin','Sex','Name','Ticket'],axis=1)
    
    #填充空值字段
    #按照gender,class进行groupby聚类然后填充这个分组的平均值
    ageArr=np.zeros((2,3))
    for i in range(2):
        for j in range(3):
            ageArr[i,j]=df[  (df['Gender']==i) &  (df['Pclass']==j+1) ]['Age'].dropna().mean()
            # 自我赋值df[  (df['Gender']==i) &  (df['Pclass']==j+1) ]=df[  (df['Gender']==i) &  (df['Pclass']==j+1) ].fillna(ageArr[i,j])
            df.loc[(df['Gender']==i) &  (df['Pclass']==j+1) &(df['Age'].isnull()),  'Age']=ageArr[i,j]
    
    #填充test数据的Far
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值