titanic_sample.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. #!/usr/bin/env python
  2. # coding: utf-8
  3. # In[28]:
  4. import pandas as pd
  5. # In[29]:
  6. # 1、获取数据
  7. titianic = pd.read_csv("./titanic.csv")
  8. titianic.head()
  9. # In[30]:
  10. # 筛选特征值和目标值
  11. x = titianic[["pclass", "age", "sex"]]
  12. y = titianic["survived"]
  13. # In[31]:
  14. x.head()
  15. # In[32]:
  16. y.head()
  17. # In[33]:
  18. # 2、数据处理
  19. # 1) 缺失值处理 age字段
  20. x.loc[:, "age"] = x["age"].fillna(x["age"].mean())
  21. # In[35]:
  22. # 2) 转换成字典
  23. x = x.to_dict(orient="records")
  24. # In[36]:
  25. from sklearn.model_selection import train_test_split
  26. # 3、数据集划分
  27. x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=22)
  28. # In[37]:
  29. # 4、字典特征抽取
  30. from sklearn.feature_extraction import DictVectorizer
  31. # In[38]:
  32. transfer = DictVectorizer()
  33. x_train = transfer.fit_transform(x_train)
  34. x_test = transfer.transform(x_test)
  35. # In[39]:
  36. from sklearn.tree import DecisionTreeClassifier
  37. from sklearn.tree import export_graphviz
  38. # 5、模型训练和预测
  39. estimator = DecisionTreeClassifier(criterion="entropy")
  40. estimator.fit(x_train, y_train)
  41. # 6、 模型评估
  42. # 方法一: 直接比对真实值和预测值
  43. y_predict = estimator.predict(x_test)
  44. print("直接比对真实值和预测值:\n", y_test == y_predict)
  45. # 方法二: 计算准确率
  46. score = estimator.score(x_test, y_test)
  47. print("准确率: \n", score)
  48. # 6) 决策树的可视化
  49. export_graphviz(estimator, out_file="./titian_tree.dot", feature_names=transfer.get_feature_names_out())