Python爬虫(三)——开封市58同城出租房决策树构建

简介: 决策树框架: 1 # coding=utf-8 2 import matplotlib.pyplot as plt 3 4 decisionNode = dict(boxstyle='sawtooth', fc='10') 5 leafNode = dict(boxstyle='round4', fc='0.

决策树框架:

 1 # coding=utf-8
 2 import matplotlib.pyplot as plt
 3 
 4 decisionNode = dict(boxstyle='sawtooth', fc='10')
 5 leafNode = dict(boxstyle='round4', fc='0.8')
 6 arrow_args = dict(arrowstyle='<-')
 7 
 8 
 9 def plotNode(nodeTxt, centerPt, parentPt, nodeType):
10     createPlot.ax1.annotate(nodeTxt, xy=parentPt, xycoords='axes fraction', \
11                             xytext=centerPt, textcoords='axes fraction', \
12                             va='center', ha='center', bbox=nodeType, arrowprops \
13                                 =arrow_args)
14 
15 
16 def getNumLeafs(myTree):
17     numLeafs = 0
18     firstStr = list(myTree.keys())[0]
19     secondDict = myTree[firstStr]
20     for key in secondDict:
21         if (type(secondDict[key]).__name__ == 'dict'):
22             numLeafs += getNumLeafs(secondDict[key])
23         else:
24             numLeafs += 1
25     return numLeafs
26 
27 
28 def getTreeDepth(myTree):
29     maxDepth = 0
30     firstStr = list(myTree.keys())[0]
31     secondDict = myTree[firstStr]
32     for key in secondDict:
33         if (type(secondDict[key]).__name__ == 'dict'):
34             thisDepth = 1 + getTreeDepth((secondDict[key]))
35         else:
36             thisDepth = 1
37         if thisDepth > maxDepth: maxDepth = thisDepth
38     return maxDepth
39 
40 
41 def retrieveTree(i):
42     # 预先设置树的信息
43     listOfTree = []
44     return listOfTree[i]
45 
46 
47 def createPlot(inTree):
48     fig = plt.figure(1, facecolor='white')
49     fig.clf()
50     axprops = dict(xticks=[], yticks=[])
51     createPlot.ax1 = plt.subplot(111, frameon=False, **axprops)
52     plotTree.totalW = float(getNumLeafs(inTree))
53     plotTree.totalD = float(getTreeDepth(inTree))
54     plotTree.xOff = -0.5 / plotTree.totalW;
55     plotTree.yOff = 1.0
56     plotTree(inTree, (0.5, 1.0), '')
57     plt.title('kaifeng.58.com\n')
58     plt.show()
59 
60 
61 def plotMidText(cntrPt, parentPt, txtString):
62     xMid = (parentPt[0] - cntrPt[0]) / 2.0 + cntrPt[0]
63     yMid = (parentPt[1] - cntrPt[1]) / 2.0 + cntrPt[1]
64     createPlot.ax1.text(xMid, yMid, txtString)
65 
66 
67 def plotTree(myTree, parentPt, nodeTxt):
68     numLeafs = getNumLeafs(myTree)
69     depth = getTreeDepth(myTree)
70     firstStr = list(myTree.keys())[0]
71     cntrPt = (plotTree.xOff + (1.0 + float(numLeafs)) / 2.0 / plotTree.totalW, \
72               plotTree.yOff)
73     plotMidText(cntrPt, parentPt, nodeTxt)
74     plotNode(firstStr, cntrPt, parentPt, decisionNode)
75     secondDict = myTree[firstStr]
76     plotTree.yOff = plotTree.yOff - 1.0 / plotTree.totalD
77     for key in secondDict:
78         if type(secondDict[key]).__name__ == 'dict':
79             plotTree(secondDict[key], cntrPt, str(key))
80         else:
81             plotTree.xOff = plotTree.xOff + 1.0 / plotTree.totalW
82             plotNode(secondDict[key], (plotTree.xOff, plotTree.yOff), \
83                      cntrPt, leafNode)
84             plotMidText((plotTree.xOff, plotTree.yOff), cntrPt, str(key))
85     plotTree.yOff = plotTree.yOff + 1.0 / plotTree.totalD
86 
87 
88 if __name__ == '__main__':
89     myTree = retrieveTree(2)
90     createPlot(myTree)

 

构造信息:

1  [{'no surfacing': {0: 'no', 1: {'flipper': {0: 'no', 1: 'yes'}}}},
2                   {'no surfacing': {0: 'no', 1: {'flipper': {0: {'head': {0: 'no', 1: 'yes'}}, 1: 'no'}}}},
3                   {'House prices <= 2000': {
4                       1: {'Room size >= 50': {1: 'Yes', 0: 'No'}}, 0: 'No'}}]

 

结果:

 

 

目录
相关文章
|
11天前
|
数据采集 存储 XML
Python爬虫:深入探索1688关键词接口获取之道
在数字化经济中,数据尤其在电商领域的价值日益凸显。1688作为中国领先的B2B平台,其关键词接口对商家至关重要。本文介绍如何通过Python爬虫技术,合法合规地获取1688关键词接口,助力商家洞察市场趋势,优化营销策略。
|
8天前
|
数据采集 JSON 开发者
Python爬虫京东商品详情数据接口
京东商品详情数据接口(JD.item_get)提供商品标题、价格、品牌、规格、图片等详细信息,适用于电商数据分析、竞品分析等。开发者需先注册账号、创建应用并申请接口权限,使用时需遵循相关规则,注意数据更新频率和错误处理。示例代码展示了如何通过 Python 调用此接口并处理返回的 JSON 数据。
|
13天前
|
XML 数据采集 数据格式
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href=&#39;example.com&#39;]` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
|
14天前
|
数据采集 JavaScript 前端开发
Python爬虫能处理动态加载的内容吗?
Python爬虫可处理动态加载内容,主要方法包括:使用Selenium模拟浏览器行为;分析网络请求,直接请求API获取数据;利用Pyppeteer控制无头Chrome。这些方法各有优势,适用于不同场景。
|
1天前
|
数据采集 存储 API
利用Python爬虫获取1688关键词接口全攻略
本文介绍如何使用Python爬虫技术合法合规地获取1688关键词接口数据,包括环境准备、注册1688开发者账号、获取Access Token、构建请求URL、发送API请求、解析HTML及数据处理存储等步骤,强调遵守法律法规和合理使用爬虫技术的重要性。
|
8天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
7天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
14天前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
128 59
|
7天前
|
小程序 开发者 Python
探索Python编程:从基础到实战
本文将引导你走进Python编程的世界,从基础语法开始,逐步深入到实战项目。我们将一起探讨如何在编程中发挥创意,解决问题,并分享一些实用的技巧和心得。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你提供有价值的参考。让我们一起开启Python编程的探索之旅吧!
31 10
|
11天前
|
机器学习/深度学习 人工智能 Java
Python 语言:强大、灵活与高效的编程之选
本文全面介绍了 Python 编程语言,涵盖其历史、特点、应用领域及核心概念。从 1989 年由 Guido van Rossum 创立至今,Python 凭借简洁的语法和强大的功能,成为数据科学、AI、Web 开发等领域的首选语言。文章还详细探讨了 Python 的语法基础、数据结构、面向对象编程等内容,旨在帮助读者深入了解并有效利用 Python 进行编程。