游戏迷提供最新游戏下载和手游攻略!

Python可视化库Pydotplus教程:安装与决策树应用入门

发布时间:2024-10-17浏览:75

1.1 pydotplus是旧pydot项目的一个改进版本,它为graphviz的点语言提供了一个python接口。

1.2 复习一下:

1.2.1 pydot已经淘汰了,不再更新了。

1.2.2 Dot是开源工具包Graphviz上用来画图的一门脚本语言,本次不介绍了。

1.3 提到基本绘制图形,dot语法类似,泰坦尼克号决策树的可视化;讲解清楚,注释仔细,通俗易懂,适合收藏。

2 介绍

2.1 官网:

https://pydotplus.readthedocs.io/https://github.com/carlos-jenkins/pydotplus

2.2 安装:

pip install pydotplus#本机安装sudo pip3.8 install pydotplus

2.3 有时候可能需要安装graphviz:

pip install graphviz #注意环境变量设置

3 效果展示

3.1 入门级图1

3.2 图1代码:

import pydotplus as pdp#方法一,单引号#graph = pdp.graph_from_dot_data('digraph demo1{a -> b -> c; c ->a; }')#方法二,双引号graph = pdp.graph_from_dot_data( ''' digraph demo1{ a -> b -> c; c ->a; } ''' )#生成jpg图片#graph.write_jpg('/home/xgj/Desktop/pydotplus/3dot.jpg')#生成png图片graph.write_png('/home/xgj/Desktop/pydotplus/3dot.png')#生成pdf文件#graph.write_pdf('/home/xgj/Desktop/pydotplus/3dot.pdf')

3.3 图2

3.4 图2代码

import pydotplus as pdp#语法符合原dot语法dot = '''//定义节点属性 digraph g { //==========定义节点关系============ a->b; b->c; c->a; c->d->e->f; d->g; e->h; //==========定义节点属性============ //定义a节点为长方形, 样式为填充, 填充颜色为#ABACBA a[shape=box,label="Server1\nWebServer",fillcolor="#ABACBA",style=filled]; //定义b为5边形, 标签为"bb", 样式为填充, 填充色为red b[shape=polygon,sides=5,label="bb",style=filled,fillcolor=red]; //c, 默认为椭圆 d[shape=circle,label="加油",fontname="Microsoft YaHei"]; //圆 e[shape=triangle]; //三角形 f[shape=polygon, sides=4, skew=0.5]; //平行四边形 g[shape=polygon, distortion=0.5]; //梯形, 上边长 h[shape=polygon, distortion=-.5]; //梯形, 下边长 }'''graph = pdp.graph_from_dot_data(dot)graph.write_jpg('/home/xgj/Desktop/pydotplus/4dot.jpg')

3.5 图3

3.6 图3代码:

import pydotplus as pdpdot_cn = """ digraph demo{ node [shape=box, style="rounded", color="black", fontname="Microsoft YaHei"]; edge [fontname="Microsoft YaHei"]; a -> b[label="哈尼"] a[label="你好么?"] b[label="我很好!"] } """graph = pdp.graph_from_dot_data(dot_cn)graph.write_jpg('/home/xgj/Desktop/pydotplus/5dot.jpg')

4 泰坦尼克号的决策树

4.1 效果图

4.2 注意

4.2.1 决策树是机器学习中一个比较重要而且常用的算法, 是基于香农的信息论计算信息熵然后计算信息增益。

4.2.2 参考文章:

#https://blog.csdn.net/qq_42768234/article/details/99453826?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.add_param_isCf

http://biostat.mc.vanderbilt.edu/wiki/pub/Main/DataSets/titanic.txt

4.3 代码:

import numpy as npimport pandas as pdfile_path = "/home/xgj/Desktop/pydotplus/titanic.csv"data = pd.read_csv(file_path)data["age"].isnull().sum() # 年龄有680个缺失值x = data[["pclass", "age", "sex"]]y = data["survived"]x["age"].fillna(x["age"].mean(), inplace=True) # 用平均年龄来填充缺失值from sklearn.model_selection import train_test_split # 导入数据集分割from sklearn.feature_extraction import DictVectorizer # 导入特征工程from sklearn.tree import DecisionTreeClassifier # 导入决策树分类器x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25) # 分割数据info = DictVectorizer(sparse=False) # 特征工程x_train = info.fit_transform(x_train.to_dict(orient="records"))x_test = info.fit_transform(x_test.to_dict(orient="records"))dec = DecisionTreeClassifier(max_depth=5)dec.fit(x_train, y_train)dec.score(x_test, y_test)dec.predict(x_test[0: 1]) # 进行测试预测from sklearn import treeimport pydotplus # 可视化dot_data = tree.export_graphviz(dec, out_file=None, filled=True, rounded=True, special_characters=True)graph = pydotplus.graph_from_dot_data(dot_data)graph.get_nodes()[7].set_fillcolor("#FFF2DD")graph.write_png("/home/xgj/Desktop/pydotplus/graph7.png")

5 加载sklearn自身数据集

5.1 效果图

5.2 参考文章

#https://blog.csdn.net/qq_39290225/article/details/99684091?utm_medium=distribute.pc_relevant.none-task-blog-OPENSEARCH-4.add_param_isCf&depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-4.add_param_isCf

5.3 代码

from sklearn import treefrom sklearn.datasets import load_winefrom sklearn.model_selection import train_test_splitwine=load_wine()#集合自身的数据集Xtrain,Xtest,Ytrain,Ytest=train_test_split(wine.data,wine.target,test_size=0.3)#训练clf=tree.DecisionTreeClassifier(criterion='entropy')clf=clf.fit(Xtrain,Ytrain)#查看一下准确度score=clf.score(Xtest,Ytest)f_name=['酒精','苹果酸','灰','灰的碱性','镁','总酚','类黄酮','非黄烷类酚类','花青素','颜色强度','色调','稀释葡萄酒','脯氨酸']dot_data=tree.export_graphviz(clf ,feature_names=f_name ,class_names=['茅台','啤酒','黄酒'] ,filled=True ,rounded=True, out_file=None )import pydotplus # 可视化graph = pydotplus.graph_from_dot_data(dot_data)graph.write_png("/home/xgj/Desktop/pydotplus/graph8.png")

6 加载自身数据集、生成dot文件和决策树

6.1 图

6.2 代码:

#参考文章#https://www.jianshu.com/p/59b510bafb4dfrom sklearn import treefrom sklearn.datasets import load_iris#导入数据集iris = load_iris()clf = tree.DecisionTreeClassifier()clf = clf.fit(iris.data, iris.target)#生成dot文件with open("/home/xgj/Desktop/pydotplus/iris.dot", 'w') as f: f = tree.export_graphviz(clf, out_file=f)#决策树pydotplus可视化import pydotplus dot_data = tree.export_graphviz(clf, out_file=None) graph = pydotplus.graph_from_dot_data(dot_data) graph.write_png("/home/xgj/Desktop/pydotplus/iris.png")

7 彩蛋

7.1 dot文件可视化两种方法:

7.2 方法一:终端执行dot语法,dot文件在根目录下

dot -Tpng -o world.png world.dot

7.3 方法二:python代码sklearn,并熟悉xy向量

7.3.1 图

7.3.2 代码

#用决策树建模import sklearn.tree as treefrom sklearn.tree import DecisionTreeRegressorimport numpy as npclf=tree.DecisionTreeRegressor(min_samples_split=50,max_leaf_nodes=15)'''DecisionTreeClassifier 能够实现多类别的分类。输入两个向量向量X,大小为[n_samples,n_features],用于记录训练样本;向量Y,大小为[n_samples],用于存储训练样本的类标签。'''#产生随机数据集和xy向量rng = np.random.RandomState(1)x = np.sort(5 * rng.rand(80, 1), axis=0)y = np.sin(x).ravel()y[::5] += 3 * (0.5 - rng.rand(16))#熟悉fitclf_fit=clf.fit(x,y)#打开dot文件tree.export_graphviz(clf_fit,out_file="/home/xgj/Desktop/yhsj/world.dot" )import pydotplus dot_data = tree.export_graphviz(clf_fit, out_file=None, filled=True, rounded=True, special_characters=True) graph = pydotplus.graph_from_dot_data(dot_data) graph.write_jpg('/home/xgj/Desktop/yhsj/dot.jpg')

小结

用户评论

代价是折磨╳

我刚刚开始接触pydotplus的学习,它的安装过程有些复杂,但对于处理决策树等可视化效果确实是个强大的工具。

    有8位网友表示赞同!

逃避

学习了pydotplus的基础入门后,我觉得它在游戏行业用于数据交互与可视化方面有很好的应用潜力。

    有18位网友表示赞同!

焚心劫

尝试用pydotplus做了一次决策模型可视化,结果超出了预期,尤其是在展示游戏策略上非常直观。

    有5位网友表示赞同!

喜欢梅西

在实现对游戏中用户行为决策树的构建时,pydotplus的帮助大到无法忽视。它的功能让我能够清晰地解释流程和结果。

    有6位网友表示赞同!

咆哮

对于需要通过视觉方式分析数据的游戏分析师来说,掌握pydotplus的基础是个必须的技能。

    有6位网友表示赞同!

仰望幸福

用了几次pydotplus进行决策森林的可视化,在游戏内性能优化方面有很大的帮助。

    有19位网友表示赞同!

灵魂摆渡人

在团队会议中分享了利用pydotplus做的某款游戏决策模型后,大家对它的视觉效果印象深刻,并提出更多创新应用点。

    有15位网友表示赞同!

半梦半醒半疯癫

个人使用pydotplus来辅助策略制定,通过可视化的逻辑树帮助团队理解关键选择的后果,提高了沟通效率。

    有6位网友表示赞同!

青楼买醉

尝试将pydotplus和游戏行为数据相结合时遇到了一些挑战,但最终结果验证了它的强大功能在数据分析上的价值。

    有19位网友表示赞同!

青衫故人

对于游戏开发者来说,掌握像pydotplus这样的工具是提升项目分析与优化能力的关键一步。

    有6位网友表示赞同!

大王派我来巡山!

通过pydotplus的可视化,我们能更直观地评估不同用户人群间的决策差异,在个性化推荐系统中发挥重要作用。

    有17位网友表示赞同!

红尘滚滚

结合游戏数据分析和决策支持系统的开发过程中,应用pydotplus有效地提升了决策模型的可解释性。

    有16位网友表示赞同!

七级床震

在制定针对玩家行为的高级策略时,对决策树可视化的深度理解,通过pydotplus得以实现,显著提升了策略决策的准确率。

    有19位网友表示赞同!

慑人的傲气

将pydotplus用于游戏内资源分配和优化过程中的模型构建,使得数据驱动的决策变得简单而有效。

    有8位网友表示赞同!

清原

学习并实践了pydotplus与游戏相关的案例分析后,我对它提高数据分析能力产生了深远的印象和改变。

    有9位网友表示赞同!

花开丶若相惜

针对玩家路径模拟和偏好预测,使用pydotplus构建的决策树为我们提供了前所未有的清晰见解。

    有17位网友表示赞同!

话少情在

作为游戏分析师,在使用pydotplus处理复杂数据集时发现其在决策可视化上的优势大大提高了分析效率。

    有8位网友表示赞同!

温柔腔

通过实践pydotplus对游戏内策略调整的数据支持,我们能够更好地预测玩家行为趋势,并制定针对性的战略。

    有10位网友表示赞同!

海盟山誓总是赊

利用pydotplus进行的游戏内数据分析和决策树可视化的操作,是我目前掌握的最实用的技术技能之一。

    有20位网友表示赞同!

热点资讯