案例:泰坦尼克号乘客生存预测
- 泰坦尼克号数据
在泰坦尼克号和titanic2数据帧描述泰坦尼克号上的个别乘客的生存状态。这里使用的数据集是由各种研究人员开始的。其中包括许多研究人员创建的旅客名单,由Michael A. Findlay编辑。我们提取的数据集中的特征是票的类别,存活,乘坐班,年龄,登陆,home.dest,房间,票,船和性别。
1、乘坐班是指乘客班(1,2,3),是社会经济阶层的代表。
2、其中age数据存在缺失。
分析
- 选择我们认为重要的几个特征 ['pclass', 'age', 'sex']
- 填充缺失值
- 特征中出现类别符号,需要进行one-hot编码处理(DictVectorizer)
- x.to_dict(orient="records") 需要将数组特征转换成字典数据
- 数据集划分
- 决策树分类预测
#泰坦尼克号决策树
def titanic():
#1.获取数据
data_titanic=pd.read_csv("titanic.csv")
#2.获取目标值与特征值
x=data_titanic[["pclass","age","sex"]]
y=data_titanic["survived"]
#3.数据处理
#1).缺失值处理
x["age"].fillna(x["age"].mean(),inplace=True)#填补处理dropna()删除缺失值所在的行
#2).转换为字典
x=x.to_dict(orient="records")
#4.划分数据集
x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=22)
#5.字典特征抽取
transfer=DictVectorizer()
x_train=transfer.fit_transform(x_train)
x_test=transfer.transform(x_test)
#6.决策树预估器
estimator=DecisionTreeClassifier(criterion="entropy")#criterion默认为gini系数,此处选择的为信息增益的熵
#max_depth:树深的大小,random_state:随机数种子
estimator.fit(x_train,y_train)
#7.模型评估
y_predict=estimator.predict(x_test)
print("y_predict:\n",y_predict)
print("直接对比真实值和预测值:\n",y_test==y_predict)
score=estimator.score(x_test,y_test)
print("准确率为:\n",score)
#8.决策树可视化
export_graphviz(estimator,out_file="titanic_tree.dot",feature_names=transfer.get_feature_names())
#使用随机森林
estimator=RandomForestClassifier()