当前位置: 首页 > news >正文

机器学习决策树

一、香农公式

熵:

信息增益:

信息增益=信息熵-条件熵

前者是初始信息熵大小,后者是因为条件加入后带来的确定性增加

信息增益表示得知特征X的信息而使得类Y的信息的不确定性减少的程度

信息增益越大说明影响越大

二、代码

"""
决策树对泰坦尼克号进行预测生死
:return: None
"""
# 获取数据
titan = pd.read_csv("./data/titanic.txt")
titan.info() # info()查看数据信息,包括每列的类型,非空值个数,内存占用等
# 处理数据,找出特征值和目标值
x = titan[['pclass', 'age', 'sex']]y = titan['survived']
print(x.info())  # 用来判断是否有空值
x.describe(include='all') # 用来查看数据的描述性统计信息
# 一定要进行缺失值处理,填为均值
mean=x['age'].mean()
print(mean)
x.loc[:,'age']=x.loc[:,'age'].fillna(mean)
# 分割数据集到训练集合测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=4)
print(x_train.head())
x_train.to_dict(orient="records") #把df变为列表套字典,后面方便变成one_hot编码
# 进行处理(特征工程)特征-》类别-》one_hot编码
dict = DictVectorizer(sparse=False) # sparse=False表示不用稀疏矩阵,用numpy数组# 这一步是对字典进行特征抽取,to_dict可以把df变为字典,records代表列名变为键
x_train = dict.fit_transform(x_train.to_dict(orient="records"))
print(type(x_train))
print(dict.get_feature_names_out())
print('-' * 50)
x_test = dict.transform(x_test.to_dict(orient="records"))
print(x_train)
# 用决策树进行预测,修改max_depth试试,修改criterion为entropy
#树过于复杂,就会产生过拟合
dec = DecisionTreeClassifier()#训练
dec.fit(x_train, y_train)# 预测准确率
print("预测的准确率:", dec.score(x_test, y_test))# 导出决策树的结构
export_graphviz(dec, out_file="tree.dot",feature_names=['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', 'female', 'male'])

http://www.lryc.cn/news/545094.html

相关文章:

  • Spring Boot + MyBatis 实现 RESTful API 的完整流程
  • 通过 ANSYS Discovery 进行 CFD 分析,增强工程设计
  • 家用可燃气体探测器——家庭燃气安全的坚实防线
  • ListControl双击实现可编辑
  • ave-form.vue 组件中 如何将产品名称发送给后端 ?
  • DeepSeek行业应用实践报告-智灵动力【112页PPT全】
  • 【Markdown 语法简洁讲解】
  • 250301-OpenWebUI配置DeepSeek-火山方舟+硅基流动+联网搜索+推理显示
  • 【3天快速入门WPF】12-MVVM
  • 查找Excel包含关键字的行(の几种简单快速方法)
  • 性能测试分析和调优
  • (视频教程)Compass代谢分析详细流程及python版-R语言版下游分析和可视化
  • 【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串
  • c++中深拷贝和浅拷贝的联系和区别
  • Autotestplat 在多个平台和公司推荐使用!
  • 字符串最后一个单词的长度
  • 【Linux】learning notes(3)make、copy、move、remove
  • 一、图像图像的基本概念
  • 两道算法练习
  • 利用 Python 爬虫进行跨境电商数据采集
  • 设计模式--spring中用到的设计模式
  • Qt控件中函数指针使用的最终版本,使用std::function
  • Java中的泛型类 --为集合的学习做准备
  • 6.6.6 嵌入式SQL
  • 基于C#的CANoe CLR Adapter开发指南
  • 【Qt】MVC设计模式
  • 【手撕算法】支持向量机(SVM)从入门到实战:数学推导与核技巧揭秘
  • JAVA面试常见题_基础部分_Dubbo面试题(上)
  • CSS—隐藏元素:1分钟掌握与使用隐藏元素的方法
  • 二、双指针——5. 移动零