前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >机器学习起步-数据收集及预处理常见的流程

机器学习起步-数据收集及预处理常见的流程

原创
作者头像
house.zhang
发布2021-12-02 16:14:21
2.3K0
发布2021-12-02 16:14:21
举报

数据是机器学习的燃料,数据预处理就是为机器学习模型提供好燃料,数据好,模型才能跑得更带劲。。

其中收集数据和预处理完整的步骤如下:

数据收集、数据可视化、数据清洗、特征工程、构建特征集和验证集、拆分训练集测试集和验证集这几个步骤,当然这几个步骤并不是完全按照流程操作,其中会相互交叉,或者往返操作。

  1. 收集数据

收集数据方法有多种,现实中要在运营环节中做很多数据埋点、获取用户消费等行为信息和兴趣偏好信息,网上爬取数据等等。 可参考极客时间-《数据分析实战45讲》中的方法。

2. 数据可视化

作用是通过可视化观察下数据,看一看特征和标签之间可能存在的关系、看看数据里有没有脏数据和离群点等,为选择具体的机器学习模型找找感觉。

代码语言:javascript
复制
#加载数据
import pandas as pd # 导入pandas数据处理工具包
df_ads= pd.read_csv('test.csv') #读入数据
df_ads.head(10) #显示前几行数据

python数据可视化必备工具包:一个是python画图工具库Matplotlib,另外一个是统计学数据可视化工具Seaborn。

代码语言:javascript
复制
#散点图来观察数据之间分布关系
import matplotlib.pyplot as plt
import seaborn as sns
plt.plot(df_ads['点赞数'],df_ads['浏览量'],'r.',label='Training data')
plt.xlabel('goods')
plt.ylabel('views')
plt.legend()
plt.show()

如下图所示:

基本可以看出呈现线性相关性。

接下来看下箱线图:

代码语言:javascript
复制
data = pd.concat([df_ads['浏览量'], df_ads['热度指数']], axis=1) # 浏览量和热度指数
fig = sns.boxplot(x='热度指数', y="浏览量", data=data) # 用seaborn的箱线图画图
fig.axis(ymin=0, ymax=800000); #设定y轴坐标

3.数据清洗

洗菜洗得越干净,模型效果越好,主要数据清洗分为四种情况:

  • 第一种是处理缺失的数据,如果备份系统里面有缺了的数据,尽量去补录。如果没有可以剔除残缺的数据,也可以用其他数据记录的平均值、随机值或者0来补值,这个补值的过程叫数据修复。
  • 第二种是处理重复的数据,如果完全重复的数据删掉就行,如果同一个主键出现两行不同的数据,就需要看看有没有其他辅助的信息可以帮助我们判断(如时间戳),要是无法判断的话,只能随机删除或者全部保留。
  • 第三种是处理错误数据:比如商品的销售量、销售金额出现负值,这时候需要删除或者转化为有意义的值,再比如表示百分比或者概率的字段,如果值大于1,也属于逻辑错误数据
  • 第四种处理不可用的数据,这指的是整理数据的格式,比如有些商品是以人民币为单位,有些以美元为单位,就需要线统一,另外就是把是和否转换为1、0 值再输入机器学习模型。

如何查看数据集中的数据需要清洗了?

可以通过DataFrame的isna().sum()函数来统计所有的NaN的个数。NaN意思是Not A Number,在python中,它代表无法表示、也无法处理的值也就是典型的脏数据。

代码语言:javascript
复制
   df_ads.isna().sum() # Nan出现的个数。

可以使用dropna()这个API把出现了NaN的数据行删掉

代码语言:javascript
复制
df_ads = df_ads.dropna()#把出现了NaN的数据行删掉

还有其他数据清洗的方法,需要针对具体的项目和数据集进行处理。

4.特征工程

特征工程是一个专门的机器学习子领域,它是数据处理过程中最有创造力的环节,特征工程做的好不好,非常影响机器学习模型的效率。

什么是特征工程了?比如说评估身体健康状况的一个指标BMI,它等于体重除以身高的平方,这就是一个特征工程。经过了这个过程,BIM这一个指数就替代了原来的两个特征-体重和身高,而且完全能客观地描绘我们身材情况。

这样的好处是什么?通过BMI这个特征,降低了特征数据集的维度。数据集中每多一个特征,模型拟合的特征空间就更大、运算量也就更大。所以,摒弃掉冗余的特征、降低特征的维度,能使机器学习模型训练得更快。

5. 构建特征集和标签集

特征就是所收集的各个数据点,是要输入机器学习模型的变量,而标签是要预测、判断或者分类的内容。对于所有监督学习,我们需要像模型中输入“特征集”和“标签集”这两组数据。

通常从一个包含了特征和标签的数据,构建特征数据集和一个标签数据集合,只需要从原数数据删除不需要的数据就行了。

比如:

代码语言:javascript
复制
X=df_ads.drop['浏览量'],axis=1):
Y=df_ads.浏览量

无监督学习不需要这样的步骤

6.拆分训练集、验证集和测试集合

从原数据集从列的维度纵向拆分成了特征集和标签集后,还需要进一步从行的维度横向拆分。主要原因是机器学习并不是通过训练数据集找出一个模型就结束了,我们要用验证数据集看看这个模型好不好,然后用测试数据集看看模型在新数据上能不能用。

拆分依据数据量来看,比如20%或30% ,具体的拆分,通常会用机器学习工具包scikit-learn 里的数据拆分工具train_test_split来完成

from sklearn.model_selection import train_test_split X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=0)

参考:

极客时间专栏-《零基础实战机器学习》

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
TI-ONE 训练平台
TI-ONE 训练平台(以下简称TI-ONE)是为 AI 工程师打造的一站式机器学习平台,为用户提供从数据接入、模型训练、模型管理到模型服务的全流程开发支持。TI-ONE 支持多种训练方式和算法框架,满足不同 AI 应用场景的需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档