美文网首页
泰坦尼克乘客生存预测

泰坦尼克乘客生存预测

作者: 疯狂的小强_94ee | 来源:发表于2019-04-11 23:01 被阅读0次

决策树算法是经常使用的数据挖掘算法,这是因为决策树就像一个人脑中的决策模型一样,呈现出来非常直观。基于决策树还诞生了很多数据挖掘算法,比如随机森林(Random forest)。

sklearn 中的决策树模型

首先,我们需要掌握 sklearn 中自带的决策树分类器 DecisionTreeClassifier,方法如下:

clf = DecisionTreeClassifier(criterion='entropy')

到目前为止,sklearn 中只实现了 ID3 与 CART决策树,所以我们暂时只能使用这两种决策树,

在构造 DecisionTreeClassifier 类时,其中有一个参数是 criterion,意为标准。它决定了构造的分类树是采用 ID3 分类树,还是 CART分类树,对应的取值分别是 entropy 或者 gini:

entropy: 基于信息熵,也就是 ID3 算法,实际结果与 C4.5 相差不大;

gini:默认参数,基于基尼系数。CART 算法是基于基尼系数做属性划分的,所以 criterion=gini 时实际上执行的是 CART 算法。

Titanic 乘客生存预测

泰坦尼克海难是著名的十大灾难之一,究竟多少人遇难,各方统计的结果不一。现在我们可以得到部分的数据,具体数据你可以从 GitHub下载:https://github.com/cystanford/Titanic_Data

实现代码:

import pandasas pd

import numpyas np

from sklearn.feature_extractionimport DictVectorizer

from sklearn.treeimport DecisionTreeClassifier

from sklearn.model_selectionimport cross_val_score

from sklearnimport tree

import graphviz

def trans_sex(x):

if x =='male':

return 1

    else:

return 0

train_data = pd.read_csv('./../data/titanic/train.csv')

test_data = pd.read_csv('./../data/titanic/test.csv', index_col=0)

# 使用平均年龄来填充年龄中的 nan 值

train_data['Age'].fillna(train_data['Age'].mean(), inplace=True)

test_data['Age'].fillna(test_data['Age'].mean(), inplace=True)

# 使用票价的均值填充票价中的 nan 值

train_data['Fare'].fillna(train_data['Fare'].mean(), inplace=True)

test_data['Fare'].fillna(test_data['Fare'].mean(), inplace=True)

# 使用登录最多的港口来填充登录港口的 nan 值

train_data['Embarked'].fillna('S', inplace=True)

test_data['Embarked'].fillna('S', inplace=True)

# 特征选择

features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']

train_features = train_data[features]

train_labels = train_data['Survived']

test_features = test_data[features]

dvec = DictVectorizer(sparse=False)

train_features = dvec.fit_transform(train_features.to_dict(orient='record'))

#train_features = dvec.transform(train_features.to_dict(orient='record'))

print(dvec.feature_names_)

# 构造 ID3 决策树

clf = DecisionTreeClassifier(criterion='entropy')

# 决策树训练

clf.fit(train_features, train_labels)

test_features = dvec.transform(test_features.to_dict(orient='record'))

# 决策树预测

pred_labels = clf.predict(test_features)

#print(pred_labels)

# 得到决策树准确率

acc_decision_tree =round(clf.score(train_features, train_labels), 6)

print(u'score 准确率为 %.4lf' % acc_decision_tree)

# 使用 K 折交叉验证 统计决策树准确率

print(u'cross_val_score 准确率为 %.4lf' % np.mean(cross_val_score(clf, train_features, train_labels, cv=10)))

# 决策树可视化

dot_data = tree.export_graphviz(clf, out_file=None)

graph = graphviz.Source(dot_data)

graph.view()

相关文章

  • 实战1-Kaggle-Tatanic

    泰坦尼克生存预测问题是机器学习入门的经典案例,通过分析已知训练集的乘客信息和生存结果,对预测集中的乘客做出预测。简...

  • 泰坦尼克乘客生存预测

    决策树算法是经常使用的数据挖掘算法,这是因为决策树就像一个人脑中的决策模型一样,呈现出来非常直观。基于决策树还诞生...

  • 01-26

    今天参考教程的泰坦尼克生存预测样例来运用决策树。利用分类器的特征选择对乘客的Pclass,Sex,等字段进行处理,...

  • 泰坦尼克之灾_Kaggle

    小白根据前人经验尝试对泰坦尼克之灾进行预测分析 一、确认目标 预测乘客是否能在泰坦尼克之灾中幸存下来。 二、数据探...

  • 数据挖掘流程示例 - 泰坦尼克号

    Kaggle上面有一个经典的入门题目,泰坦尼克号乘客的生存预测。此文针对这个题目,演示数据挖掘的一些基本方法。 题...

  • SQL必知必会(实战:数据清洗)

    数据清洗的准则 数据集或多或少地会存在数据质量问题。这里我们使用泰坦尼克号乘客生存预测数据集,你可以从GitHub...

  • 泰坦尼克生存预测

    泰坦尼克的沉没是历史上最臭名昭著的海难。1912年四月5日,在她的处女航上,泰坦尼克由于撞上冰山而沉没,2224人...

  • kaggle之泰坦尼克之灾

    项目介绍 基于kaggle提供的泰坦尼克之灾数据,使用python与sklearn机器学习模块,预测乘客的存活状况...

  • 项目 0: 预测泰坦尼克号乘客生还率

    机器学习工程师纳米学位 机器学习基础 项目 0: 预测泰坦尼克号乘客生还率 1912年,泰坦尼克号在第一次航行中就...

  • 泰坦尼克号生还者预测案例分析

    泰坦尼克号生还者预测 1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有...

网友评论

      本文标题:泰坦尼克乘客生存预测

      本文链接:https://www.haomeiwen.com/subject/ciyfwqtx.html