利用DecisionTree对titanic数据进行分类

来源:互联网 发布:iqunix 知乎 编辑:程序博客网 时间:2024/06/05 17:27
import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report


titanic = pd.read_csv('http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt')
#print(titanic.head())检查数据是否读入成功
print('原始数据信息如下:\n')
titanic.info()
print('\n'*2)
#特征选取
X = titanic[['pclass','age','sex']]
y = titanic['survived']
print('特征选取后的数据信息如下:\n')#对选出来的数据进行查看
X.info()
print('\n'*2)
#对空白的age列进行填充,因为中位数和平均数对模型的影响最小,所以使用平均数进行填充
X['age'].fillna(X['age'].mean(),inplace=True)
print('经过平均值填充以后的数据信息如下:\n')
X.info()
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33)
vec = DictVectorizer(sparse=False)


X_train = vec.fit_transform(X_train.to_dict(orient='record'))
print(vec.feature_names_)#经过特征转换以后,我们发现凡是类别形的特征都单独剥离出来,数值型的则保持不变
X_test = vec.transform(X_test.to_dict(orient='record'))#对测试数据进行特征转换
dtc = DecisionTreeClassifier()
dtc.fit(X_train,y_train)
y_predict = dtc.predict(X_test)
print('The Accuracy of DecisionTree is,',dtc.score(X_test,y_test))
print(classification_report(y_test,y_predict,target_names=['died','survived'])) 
阅读全文
0 0