案例:泰坦尼克号乘客生存预测
- 泰坦尼克号数据
在泰坦尼克号和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: ",y_predict) print("直接对比真实值和预测值: ",y_test==y_predict) score=estimator.score(x_test,y_test) print("准确率为: ",score) #8.决策树可视化 export_graphviz(estimator,out_file="titanic_tree.dot",feature_names=transfer.get_feature_names()) #使用随机森林 estimator=RandomForestClassifier()