- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
一、概述
机器学习最基础的5个流程,分别是数据获取,数据预处理,特征工程,建模、测试和预测,上线与部署。
如果用做菜来对比,数据获取就好比买菜,数据预处理就好比洗菜,特征工程就好比主菜辅料加工准备,建模就好比炒菜,上线部署就好比摆盘上菜。
由此可见,数据预处理和特征工程在整个机器学习应用工作中,占据了极其重要的地位。要是菜没洗干净,食材没加工好,大厨手艺再高也做不出好吃的菜。
数据预处理
数据预处理主要是从数据角度和业务角度两方面入手,从获取的数据中查缺补漏,修正不准确的数据,剔除不适用的数据。
数据预处理的主要目的就是让数据符合模型需求,能正确表达业务意义。
常见的需要处理的问题有:
数据类型问题:数据中有的是文本格式,有的是数值格式,有的同样是时间序列但是格式不同。
数据质量问题:数据存在重复值,异常值,缺失值,数据量纲不统一有的数据取值在(0,1)之间有的取值是百万级的,样本分布存在偏态有某几类样本量极大。
业务表达问题:有些数据从值上看符合一般逻辑,但是落在具体业务场景中,就会存在问题,因此要结合业务意义,剔除不符合要求的样本数据。
特征工程
特征工程主要是对原始数据进行加工、组合、转换、产生新的变量,使其更能代表预测模型的潜在问题。同时还可以通过特征工程,挑选和提取一些更有价值的特征,剔除一些对模型性能影响不大的特征,从而降低模型计算的复杂度。
特征工程的主要目的是降低模型计算成本,提高模型精度。
常见的需要处理的问题有:
相关性分析:特征与特征之间相关性强,说明具有多重共线性,可以将几个特征组合成一个新特征,实现降维;特征与目标之间的相关性强,说明特征对目标的解释性好,是可用的特征,反之,说明特征对目标没什么影响,则可以剔除该特征。
特征构造:基于原始特征,进行组合,转换,加工,生成新的特征,使得其更具有对目标的解释性。
特征降维:讲一些解释性弱的特征,业务意义不强的特征剔除,降低模型运算复杂度,提高性能。
二、常用功能
接下来以python为例,介绍在数据预处理和特征工程过程中常用的一些方法。
#导入数据,这里以python自带的鸢尾花数据为例fromsklearnimportdatasetsimportpandasaspd?importnumpyasnp#加载数据集data=datasets.load_iris()X=data.data?#特征值y=data.target?#目标值data_iris=pd.DataFrame(X)data_iris[target]=pd.DataFrame(y)data_iris=data_iris.rename(columns={0:F1,1:F2,2:F3,3:F4,target:target})data_iris.head()
数据预处理
重复值处理
#重复值删除data_iris=data_iris.drop_duplicates()
缺失值处理
#缺失值处理##查看缺失值data_iris.isnull().sum()##缺失值删除###删除含有缺失值的行?data_iris=data_iris.dropna()?
###删除含有缺失值的列?data_iris=data_iris.dropna(axis=1)
##缺失值填补###用指定数值填充缺失值,如0data_iris=data_iris.fillna(0)###用均值、中位数、众数填补data_iris=data_iris.fillna(data_iris.mean())
异常值处理
#异常值识别##分位数识别异常值,将上下四分位数之外的都定义为异常值
fromscipyimportstats?
###计算IQR?Q1=data_iris.quantile(0.25)?Q3=data_iris.quantile(0.75)?IQR=Q3-Q1?
###找出异常值?lower_bound=Q1-1.5*IQR?upper_bound=Q3+1.5*IQR?outliers=data_iris[(data_irislower_bound)|(data_irisupper_bound)]
##标准差识别异常值,在几个标准差之外的数据定义为异常值z_scores=(data_iris-data_iris.mean())/data_iris.std()?outliers_z=z_scores[abs(z_scores)3]
#异常值处理#异常值处理方式很多,如直接删除或用均值替代等,其与缺失值处理方式基本一致,就
文档评论(0)