机器学习笔记:数据处理基础
来源:互联网 发布:企业淘宝开店流程步骤 编辑:程序博客网 时间:2024/06/06 03:02
本文为优达学城机器学习入门课程的mini项目,简单讲述了怎样去认识并简单处理原始数据。
数据与依赖库
import pickleenron_data = pickle.load(open("../final_project/final_project_dataset.pkl", "rb"))
概览
对于拿到的结构化的数据,首先要做的就是查看数据结构,对数据的组成有个大概的了解。这里预先知道了pkl文件内容为字典结构,但是不知道是否有嵌套,所以打印每一项:
for key in enron_data: print(key,enron_data.get(key))
其实按理说对数据的概览应该只需要输出几个条目即可,只是目前对字典操作还不了解,而且文件也不大,直接打印全部内容。下图为文件内容的最后一项:
可以看到数据结构为双层字典嵌套,外层字典的key为人名,内层字典的key即为每个人对应的特征值,其中特征值的缺省使用”NaN”表示。
特征值列表
为了方便对各特征值进行统计,把特征值从字典中提取出来存储到列表中,此处提取了人名、person of interest、薪水、总金额与邮箱地址:
persons=[] #人名列表POI=[] #person of interestsalarys=[]total_payments=[]email_addresses=[]for person in enron_data: persons.append(person) if(enron_data[person]['poi']==1): POI.append(person) salarys.append(enron_data[person]['salary']) total_payments.append(enron_data[person]['total_payments']) email_addresses.append(enron_data[person]['email_address'])
问题
比如现在需要计算有多少人的邮箱地址是不明确的,可以构造一个函数来进行计算某一特征值下的缺省值:
def num_of_specific_val(feature_list): num_of_NaN=0 for item in feature_list: if(item=="NaN"): num_of_NaN+=1 print(num_of_NaN)num_of_specific_val(email_addresses)
下面这条说错了,应该用max(list)或min(list)方法,排序会破坏数据的顺序。
又或者,现在需要计算”total_payment”特征下的最大值。可以使用排序来解决,不过在排序之前,需要先对缺省值进行处理,因为排序操作是无法处理字符串”NaN”的:
for i in range(0,len(total_payments)): if(total_payments[i]=='NaN'): total_payments[i]=0total_payments.sort()print(total_payments[-1])
TXT文件
TXT文件是无结构的,在处理TXT文件时通常需要自己处理来生成结构化的数据。比如这里有一份POI名单,内容如下图所示:
如果需要提取出所有POI的名字,则需要做字符串处理:
fd=open("../final_project/poi_names.txt",'r')#概览数据结构(测试)# for line in fd:# print(line.strip())POI=[]for line in fd: if '(' in line: POI.append(line.split(")")[-1].strip())print(POI)fd.close()
阅读全文
0 0
- 机器学习笔记:数据处理基础
- Python学习笔记:数据处理三方库基础
- 机器学习笔记--机器学习的基础
- 机器学习的数据处理
- 机器学习基础 总结笔记
- 机器学习基础学习笔记1-基本概念
- 机器学习基础-学习笔记 矩阵论
- 机器学习基础-学习笔记 概率论
- 机器学习实战笔记1(机器学习基础)
- 机器学习笔记(一)——机器学习基础
- 《机器学习实战》笔记一——机器学习基础
- 机器学习实战笔记(1)机器学习基础
- [机器学习] Coursera ML笔记 - 机器学习基础概念
- <机器学习笔记-01><scikit-learn 01>机器学习基础
- 机器学习实战笔记-1基础
- 机器学习基础(林軒田)笔记之一
- 机器学习基础(林軒田)笔记之三
- 机器学习基础(林軒田)笔记之二
- 计算机网络原理
- scrollview嵌套listview导致的高度计算不正确
- ar
- 多线程基础
- day02
- 机器学习笔记:数据处理基础
- 一起来跳舞 v3.4.3 安卓版下载附攻略
- java中重载与重写的区别
- 从零开始开发Android版2048 (六)
- 【机器学习】支持向量机SVM总结
- git命令之pull
- 设置绝对路径
- python进行数据处理——pandas的drop函数
- SDL2解析并显示24位bmp