3.python机器学习入门----特征工程(上)

1.什么是特征?

以存储在SQL数据库表中的数据为例。表由行和列组成,表中包含整形数据、字符串数据、日期字段等。现在我们要想对日期列进行一些分析,但是它并没有直接的应用价值。所以,首先编写一个程序(或脚本)来提取任意特定的日期,并创建带有该信息的单独列。现在将七天(星期一...星期日)存储在一个新项目中。然后创建一个项目来检查某一天是周末还是工作日。创建另一个字段is_weekend,如果那天是周末,则其为True;否则为False。可以用它来分析预测模型,这就是特征。

特征应用于以下几个方面:

  • 计算机视觉技术,如图像像素、边缘、角点等。
  • 语音识别,如声音、噪音等方面。

 2.特征工程

数据科学家在解决任何问题的时候,都会花费超过一半的时间来选择正确的特征。在特征工程中花费时间是有一定好处的,如以下几点。

  • 使简单模型的执行效果比复杂模型要好。
  • 减少模型选择时间,增加了简单模型的预测能力。
  • 通过简化模型来缩短训练时间。

特征提取:通过对现有特征集进行一些交换,来选择新特征以去除冗余的过程

特征选择:从数据中选择特征子集技术,它和特征提取不同,后者是创建新特征的过程。特征选择是从数据本身中找到有用的特                        征。在特征选择中常使用的两种方法:过滤法、包装法。还有嵌入法,岭回归和套索回归等。

3.特征工程通用准则

3.1 处理数值特征

最大最小标准化:Xnew=(Xi-min(X))/(max(X)-min(X))

Z-分数标准化:Z=(X-mean(X))/StdDev(X)

3.2 处理分类特征

分类特征是指包含预定义集合值的特征。例如,性别、颜色等。处理分类特征是将数据放入预定义的类别中。

3.3 处理基于时间的特征

3.4 处理文本特征

4 用python进行特征工程

4.1 Pandas的基本操作

Pandas能够快熟灵活地对关系数据进行访问。在Pandas中两个主要的数据结构是Series(一维数据结构)和DataFrame(二维数据结构)。

安装Pandas:

pip install pandas

导入Pandas:

import pandas

读入csv文件:

csv_file = pandas.read_csv(fileName)      #此命令将创建一个DataFrame并将数据从文件中加载到DataFrame里。

读取excel文件:

exl_file = pandas.read_excel(fileName) 

读取JSON文件:

Json_file = pandas.read_json(fileName) 

读取保存对象(Python pickle)

pickle_frame = pandas.read_pickle(fileName)    #此操作可用于保存在DataFrame中完成的一些操作。

读取HTML:

html_table = pandas.read_html(url)     #从给定的URL中读取HTML表。

4.2 数据输出

#导出数据文件到csv文件

csv_file.to_csv(fileName)

#导出数据文件到excel文件

exl_file.to_excel(fileName)

#导出数据文件到json文件对象

json_file.to_json(fileName)

#导出数据文件到pickle对象

pickle_freme.to_pickle(fileName)

#导出数据文件到html表

html_table.to_html(fileName)

4.3 数据选择

Pandas 的DataFrame是行的集合,每行都有一些预定的列。数据选择包括分割DataFrame和提取所需信息的技术。

下面通过一个例子来介绍数据选择:

product_df = pandas.read_csv('product_data.csv')

product_df['Columu']    #通过[ ]指定列的名称来完成。

如果是多列选择,则需要指定列表。

listOfCols = ['Columu1','Columu2']

product_df['listOfCols ']

# 上述代码可以合并为以下形式

product_df [['ProductName','Cost']]

想要基于行选择数据,则可以这样操作:

#选择引索为2的行

index = 2

product_df.loc[index]

#选择引索小于2的行

index = 2

product_df.loc[:index]

#选择前两行

row = 2

product_df.iloc[:row]

#选择后两行

row = 2

product_df.iloc[-row:]

#选择所有行的前三列

product_df.iloc[:,1,4]

条件选择:可以根据条件选择数据

product_df[product_df['Cost']>=30000]

product_df[(product_df['Cost']>=30000)&product_df['ShippingLocation']=='Delhi')]     #AND操作

product_df[(product_df['Cost']>=30000)/product_df['ShippingLocation']=='Delhi')]     #OR操作

显示不满足条件的数据。

product_df[~product_df['Cost']>=30000]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值