用泰坦尼克号数据学习数据分析(二)

昨天提交了一次,结果有点惨,今天要好好做辣。

填补age空缺,使用随机森林算法

随机森林算法

随机森林顾名思义,是用随机的方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林之后,当有一个新的输入样本进入的时候,就让森林中的每一棵决策树分别进行一下判断,看看这个样本应该属于哪一类(对于分类算法),然后看看哪一类被选择最多,就预测这个样本为那一类。
 

用泰坦尼克号数据学习数据分析(二)

读入数据可以看到age中只有714个数据,原理是读入这714个数据的非age值,和age值,训练算法后,读入不含age的行中的非age值,预测其age。

代码

age_df = data[['Age','Survived','Fare', 'Parch', 'SibSp', 'Pclass']]#读入数据中的部分值
age_df_notnull = age_df.loc[(data['Age'].notnull())]#读入值中含age的值
age_df_isnull = age_df.loc[(data['Age'].isnull())]#读入中不含age的值
X = age_df_notnull.values[:,1:]#切片,每一行的第二列到最后一列
Y = age_df_notnull.values[:,0]#每一行的第一列
Rft = RandomForestRegressor(n_estimators=1000,n_jobs=-1)
Rft.fit(X,Y)#训练算法
predictAges = Rft.predict(age_df_isnull.values[:,1:])#预测
data.loc[data['Age'].isnull(),['Age']] = predictAges#将预测值赋给空的age

用泰坦尼克号数据学习数据分析(二)

成功