#(1)数据获取
# 导入泰坦尼克号沉船幸存者和死者数据
import pandas as pd
filepath = 'C:\\Users\\admin\\.spyder-py3\\test\\文件处理\\泰坦尼克数据集\\taitan.csv'
data = pd.read_csv(filepath)
# survived列代表是否获救,pclass代表坐在什么等级的船舱
#(2)数据处理
# 选取特征:几等仓、性别、年龄
features = data[['Pclass','Age','Sex']]
# 处理缺失值,缺失的年龄变成平均年龄
features['Age'].fillna(features['Age'].mean(),inplace=True)
# 获取目标值
data_targets = data['Survived']
##(3)特征抽取
# sex特征是字符型数据,需要将其转换成数值类型,或变成sparse矩阵
from sklearn.feature_extraction import DictVectorizer #字典特征提取方法
vect = DictVectorizer()
# 将dataframe类型数据转换成由字典构成的列表:[{'pclass':3},{'age':20},{'sex':'male'}]
# 因为字典抽取方法vect.fit只能接收这种类型的数据
features = features.to_dict(orient = 'records')
# 提取特征值并转换成spase矩阵
data_features = vect.fit_transform(features)
#(4)划分训练集和测试集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(data_features,data_targets,test_size=0.25)
#(5)使用决策树方法进行分类
from sklearn.tree import DecisionTreeClassifier
# 接收决策树分类器
classifier = DecisionTreeClassifier()
# 训练数据输入,fit()只能识别数值类型,或sparse矩阵
classifier.fit(x_train,y_train)
# 评分法,准确率
accuracy = classifier.score(x_test,y_test)
# 预测
# result = classifier.predict(需要预测的x特征值数据)