Python众筹项目结果预测:优化后的随机森林分类器可视化|数据代码分享

简介: Python众筹项目结果预测:优化后的随机森林分类器可视化|数据代码分享


随着信息技术的飞速发展,众筹作为一个互联网金融的子领域已经成为个人和小企业主筹集资金支持梦想的创新渠道点击文末“阅读原文”获取完整代码数据

相关视频

image.png

无论对于众筹发起者还是众筹平台而言,如何利用历史数据去准确预测一个众筹项目的成功与否乃至最终筹款额度都是非常值得探讨研究的问题。

解决方案

任务/目标

根据历史数据,帮助客户分析众筹项目成功规律,预测每个项目的筹款额度。

数据源准备

从Kickstarter平台上爬取了众筹项目数据查看文末了解数据免费获取方式,其中包含了众筹项目名称、链接、描述、支持者数量和许多其他特征。随后进行了数据清洗。主要处理了各种爬虫过程中产生的缺失值。

7e10b0548698f45e10c846faf5fc9c78.png

print(df_2018.shape)
print(df_2016.shape)

e1d2089cbee6406bb03c2d119dbb7936.png

特征转换

项目名称字段二分为离散型变量(已知/未知);项目描述抽象成项目描述字数。额外加入可计算属性平均每参与者贡献额。

df.country = df.country.'N,0"', value='NO')
ummies(df.drop(labels=['name', 'launched', 'deadlin
df_encoded['avbacking'] = (df_encoded['usd_pledgal']/(df_encoded['backers']+1))

构造

划分训练集和测试集

考虑到筹款项目与时间关系不大,使用最普遍的不放回抽样方法划分训练集与测试集,比例为4:1。

数据分析

我想从了解Kickstarter项目的基础数据开始,这包括项目发起地、主要类别、持续时间、目标等内容。

percent_plot((df.countcounts()/df.s


cab170d751912916ac7370ce8ebc0c8f.png

0e8a8842d5cf5945305d9aac1f5b62a9.png

4ab26c581b65c2cf455483ed35ef48bd.png

4ab26c581b65c2cf455483ed35ef48bd.png


bf6afaa19700deff64e09d962be7f27a.png


描述性统计

从描述性统计中我们能学到什么?成功与什么有关?我们必须记住,相关性并不等于因果关系。

050331bbf21af04402d090f8ceb86472.png


机器学习分类模型

我们来看看是否能够准确地预测哪些项目会成功,哪些项目不会成功。我们将使用随机森林分类器,因为这种集成学习方法通常相当强大,并且不是基于距离的(所以我们不需要进一步标准化特征,如项目持续时间、实际筹集资金或实际目标金额)。

R_moel(42, X_train, X_test, y_train, y_test)


c4a691bad11f9dbefeab70ae9d349315.png

e080f48aabc0a63c22e4d3a2352ad565.png

print_iprtant_fe='columns'))
usd_gol_real
duration
main_category_Music

结论

根据随机森林集成学习器的特征重要性,最重要的特征包括实际目标金额(usd_goal_real)、项目持续时间(duration)、主要类别中的漫画(main_category_Comics)、时尚(main_category_Fashion)、音乐(main_category_Music)和戏剧(main_category_Theater)。这表明我们设定的货币目标以及我们允许人们为项目筹款的时间长度确实非常重要。艺术和表演类别的项目更有可能成功,这一结论得到了描述性统计分析的佐证。

许多因素都对此有贡献,而这些因素无法完全通过数据来解释。例如,商业理念、规划、激励人们进行筹款的措施或项目设计都很难量化。也许如果我们拥有每个项目评论中的情感数据,我们就可以将其整合到一个更大、更好的分类模型中,以预测我们的成功几率。

相关文章
|
20小时前
|
数据采集 数据挖掘 Python
最全妙不可言。写出优雅的 Python 代码的七条重要技巧,2024年最新被面试官怼了还有戏吗
最全妙不可言。写出优雅的 Python 代码的七条重要技巧,2024年最新被面试官怼了还有戏吗
|
20小时前
|
存储 缓存 API
python源码解读_python代码解释
python源码解读_python代码解释
520专属——使用Python代码表白究竟能不能成功?
520,谐音:“我爱你”,一直觉得,520真正的意义,不单是用于表达爱,也不是为了收礼物和红包,而是提醒我们,不要忘记爱与被爱。 废话不多说,下面整理了9个效果图和参考代码,感兴趣的朋友可以看看
|
1天前
|
机器学习/深度学习 数据采集 数据挖掘
90%的人说Python程序慢,5大神招让你的代码像赛车一样跑起来_代码需要跑很久怎么办(2)
90%的人说Python程序慢,5大神招让你的代码像赛车一样跑起来_代码需要跑很久怎么办(2)
|
20小时前
|
数据采集 算法 Python
2024年Python最全python基础入门:高阶函数,小米面试编程题
2024年Python最全python基础入门:高阶函数,小米面试编程题
|
20小时前
|
数据采集 人工智能 前端开发
干货满满,转行逆袭,0编程基础学Python拿高薪offer如何做?都在这里!
干货满满,转行逆袭,0编程基础学Python拿高薪offer如何做?都在这里!
|
3天前
|
Python
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
10个python入门小游戏,零基础打通关,就能掌握编程基础_python编写的入门简单小游戏
|
5天前
|
网络协议 Unix Python
Python编程-----网络通信
Python编程-----网络通信
9 1
|
6天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
【5月更文挑战第9天】`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
33 5
|
6天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
17 0