优达学诚--对安然事件数据集的分析

本篇文章旨在通过对安然事件数据集的分析教会大家面对一个数据集,应该如何下手

安然事件造成有史以来最大的公司破产。在2000年度,安然是美国最大的能源公司,然而被揭露舞弊后,它在一年内就破产了。

我们之所以选择使用安然事件的数据集来做机器学习的项目,是因为我们已经有安然的电子邮件数据库,它包含150名前安然员工之间的50万封电子邮件,主要是高级管理人员。这也是唯一的大型公共的真实邮件数据库。

感兴趣的可以看一下安然的纪录片,也是非常令人唏嘘的一部经典纪录片:【纪录片】安然:房间里最聪明的人,看完我的感受就是:要脚踏实地啊,别为了钱瞎jb搞啊~

好啦,我们这篇文章将分析安然的数据,查看是否存在哪些暴露出他们违法行为的邮件,整个项目并没有想象中的那么难,跟我一起来看看吧

准备工作

1.安装Python,pip,scikit-learn包
这一步如果有问题请参考文章朴素贝叶斯项目的“准备工作”部分和结尾的“其他问题”部分

2.clone资源库
需要 git 来复制资源库:git clone https://github.com/udacity/ud120-projects.git(可以先熟悉git的使用,点击链接)

克隆之后进入 tools/ 目录,运行 startup.py。该程序首先检查 python 模块(看你的numpy,scikit-learn等的包是否成功安装)然后下载并解压缩我们在后期将大量使用的大型数据集。下载和解压缩需要一些时间,但是你无需等到全部完成再开始第一部分。

3.下载并解压安然邮件数据

下载地址http://zoo.cs.yale.edu/classes/cs458/lectures/sklearn/ud/ud120-projects-master/enron_mail_20150507.tgz
数据较大,解压建议用7zip解压(可能需要半个小时)

4.运行开始代码

聚合的安然电子邮件和财务数据集被存储到字典(Dictionary中,字典中的每个**键(Key)**是一个人名,而且值是包含此人所有特征的一个字典。电子邮件和财务 (E+F) 数据字典被存储在 pickle 文件中,该文件可直接存储和加载 python 对象,非常方便。 使用 datasets_questions/explore_enron_data.py 加载数据集。

不熟悉字典功能的可以自行百度“python 字典”来查看相关知识

安然事件数据练习

1.数据集中有多少数据点(人)?

因为数据被储存在字典中,所以通过以下代码可以查看人数

print len(enron_data)

2.对于每个人,有多少个特征可用?

count=0
for i in enron_data["METTS MARK"]:
    count+=1
print count

3.数据集中有多少嫌疑人?

“POI”(Person of interest,嫌疑人)特征记录着一个人是否为相关人士的信息

count=0
for i in enron_data.keys():
    if enron_data[i]["poi"]==1:
	    count+=1

print count

4.我们列出了多少个嫌疑人

我们列出的嫌疑人是根据安然事件涉案人员这篇文章列出来的,存在了…/final_project/poi_names.txt 中,总共列出了多少个?

f= open('.../ud120-projects/final_project/poi_names.txt')

context=f.readlines()

count=0
for line in context:
    if line.startswith('(y)')==True or line.startswith('(n)')==True:
	    count+=1
		
print "There are ",count,"POIs we listed"

5.James Prentice 名下的股票总值是多少?

和任何字典的字典一样,个人/特征可以这样被访问:enron_data["LASTNAME FIRSTNAME"]["feature_name"],可以用以下代码来查看James Prentice 名下的股票总值是多少?

#key为"PRENTICE JAMES"这一项也是一个小字典,那么这个字典的key值我们先找到
print enron_data["PRENTICE JAMES"].keys()


#找到了股票总值的key为"total_stock_value",查看值
print enron_data["PRENTICE JAMES"]["total_stock_value"]

6.谁卷走了最多的钱?

通过对安然事件文章的阅读或者【纪录片】安然,我们更细致的了解了以下的情况:

安然的CEO:Jeffrey Skilling
安然董事会主席:Kenneth Lay
安然CFO:Andrew Fastow

那么这三个人里面,谁卷走了最多的钱?

print "Jeffrey Skilling got",enron_data["SKILLING JEFFREY K"]["total_payments"]
print "Kenneth Lay got",enron_data["LAY KENNETH L"]["total_payments"]
print "Andrew Fastow got",enron_data["FASTOW ANDREW S"]["total_payments"]

7.处理未填充的数据

如果你用enron_data["任何一个人名"].values()都可以看到有很多数据显示“NaN”,意思就是这个数据未填充,缺失的数据。我们先找到有多少数据是已填充的

此数据集中有多少雇员有量化的工资?已知的邮箱地址是否可用?

count1=0
count2=0
for key in enron_data:
    if enron_data[key]["salary"]!="NaN":
	    count1+=1
	
for key in enron_data:
	if enron_data[key]["email_address"]!="NaN":
	    count2+=1
		
print "There are ",count1,"folks in this dataset have a quantified salary"
print "There are ",count2,"folks in this dataset have a known email adress"

你的是对作者莫大的支持哦~?

如果你想看其他的关于机器学习的一些知识,可以关注我的知乎专栏,我是一个机器学习小白,初学者总会遇到各种各样的困难,我会从初学者的角度把每一个坑都给你仔仔细细的讲明白咯~

优达学诚--对安然事件数据集的分析_第1张图片

关注我的公众号,有更多机器学习、人工智能、个人提升、好书推荐等文章哦~

优达学诚--对安然事件数据集的分析_第2张图片

你可能感兴趣的:(机器学习,机器学习,数据分析,优达学诚)