机器学习实战——特征工程之数据预处理

机器学习实战的特征工程主要包含数据预处理、特征构建、特征选择三步,首先来介绍数据预处理。

我选择python作为工具,并将主要用到pandas、numpy等数据工具库。加载库:

import pandas as pd
import numpy as np

1. 观察数据

(1)查看数据的行数和列数

print("TRAIN shape:",train.shape)

(2)查看数据的标签

print("TRAIN columns:",train.columns)

(3)查看各字段的信息(大小、数据类型)

print("查看各字段的信息:\n"),train.info()     #不需要print

(4)查看数据描述(数据长度、均值、标准差、极大值、极小值、四分位点)

print("TRAIN describe:\n", train.describe())

(5)查看本题的label

print('本题的label是:',set(train.columns)-set(test.columns))

2. 处理错误数据

如果观察数据时发现在某些应该是int或float等数值型的列的类型是object,表明存在错误数据,需要观察后进行处理。

(1)将内容为"\\N"的脏数据替换为-1

train['column_i'] = train['column_i'].replace("\\N",-1)

(2)将格式为'str'的数据转化为'float'型

train['column_i'] = train['column_i'].astype('float')

3. 缺失值处理

(1)查看缺失值所占比例

print("缺失值比例:", len(train['column_i'][pd.isnull(train['column_i'])]) / len(train['column_i']))

(2)删除包含缺失值的任意行

train = train.dropna()

(3)用0/-1/均值/众数/中位数填补

train = train.fillna(0)
train = train.fillna(-1)
train['column_i'] = train['column_i'].fillna(train['column_i'].mean()) #均值
train['column_i'] = train['column_i'].fillna(train['column_i'].mode()) #众数
train['column_i'] = train['column_i'].fillna(train['column_i'].median()) #中位数
train['column_i'] = train['column_i'].fillna(method='pad') #前一个非缺失值
train['column_i'] = train['column_i'].fillna(method='bfill') #后一个非缺失值

4. 异常值处理

由于测量误差或实验误差,原始数据中可能会存在异常值。检测异常值最常见的方法是数据可视化,另外也可以根据一些规则来判定异常值,如将超出数据5%或95%的值视为异常值、距均值超过四分卫距两倍的值看作异常值等等。

5. 数据标准化与编码

(1)Min-Max标准化

也称离差标准化,将数据映射到0~1范围之内处理,对于方差非常小的属性可以增强其稳定性,公式为:

x{}'=\frac{x-min}{max-min}

train['column_i'] = (train['column_i']-train['column_i'].min())/(train['column_i'].max()-train['column_i'].min())

(2)one-hot编码

将指定列进行one-hot编码,并合并到原dataframe中。

train = train.join(pd.get_dummies(train['gender']))

(3)映射编码

将无实际意义的离散值映射到0~n的范围内。

# 定义两个字典,用于映射
label2data = dict(zip(range(0,len(set(train['column_i']))),sorted(list(set(train['column_i'])))))
data2label = dict(zip(sorted(list(set(train['column_i']))),range(0,len(set(train['column_i'])))))
train['column_i'] = train['column_i'].map(data2label) #编码
train['column_i'] = train['column_i'].map(label2data) #解码

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
人工智能项目资料-基于sEMG和IMU的手语手势识别,包括数据收集、数据预处理(去噪、特征提取,分割)、神经网络搭建、实时识别等。 【探索人工智能的宝藏之地】 无论您是计算机相关专业的在校学生、老师,还是企业界的探索者,这个项目都是为您量身打造的。无论您是初入此领域的小白,还是寻求更高层次进阶的资深人士,这里都有您需要的宝藏。不仅如此,它还可以作为毕设项目、课程设计、作业、甚至项目初期的立项演示。 【人工智能的深度探索】 人工智能——模拟人类智能的技术和理论,使其在计算机上展现出类似人类的思考、判断、决策、学习和交流能力。这不仅是一门技术,更是一种前沿的科学探索。 【实战项目与源码分享】 我们深入探讨了深度学习的基本原理、神经网络的应用、自然语言处理、语言模型、文本分类、信息检索等领域。更有深度学习、机器学习、自然语言处理和计算机视觉的实战项目源码,助您从理论走向实践,如果您已有一定基础,您可以基于这些源码进行修改和扩展,实现更多功能。 【期待与您同行】 我们真诚地邀请您下载并使用这些资源,与我们一起在人工智能的海洋中航行。同时,我们也期待与您的沟通交流,共同学习,共同进步。让我们在这个充满挑战和机遇的领域中共同探索未来!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值