首页 > 其他分享 >机器学习——数据预处理(读这一篇就够了!)

机器学习——数据预处理(读这一篇就够了!)

时间:2023-10-23 22:27:00浏览次数:32  
标签:inputs 一篇 NaN Alley pandas 就够 Pave data 预处理

为了能用深度学习来解决现实世界的问题,我们经常从预处理原始数据开始, 而不是从那些准备好的张量格式数据开始。 下面我们将简要介绍使用pandas预处理原始数据,并将原始数据转换为张量格式的步骤。

1.读取数据集

举一个例子,我们首先创建一个人工数据集,并存储在CSV(逗号分隔值)文件 ../data/house_tiny.csv中。 以其他格式存储的数据也可以通过类似的方式进行处理。 下面我们将数据集按行写入CSV文件中。

import os

os.makedirs(os.path.join('..', 'data'), exist_ok=True)
data_file = os.path.join('..', 'data', 'house_tiny.csv')
with open(data_file, 'w') as f:
    f.write('NumRooms,Alley,Price\n')  # 列名
    f.write('NA,Pave,127500\n')  # 每行表示一个数据样本
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

 要从创建的CSV文件中加载原始数据集,我们导入pandas包并调用read_csv函数。该数据集有四行三列。其中每行描述了房间数量(“NumRooms”)、巷子类型(“Alley”)和房屋价格(“Price”)。

# 如果没有安装pandas,只需取消对以下行的注释来安装pandas
# !pip install pandas
import pandas as pd

data = pd.read_csv(data_file)
print(data)
   NumRooms Alley   Price
0       NaN  Pave  127500
1       2.0   NaN  106000
2       4.0   NaN  178100
3       NaN   NaN  140000

 

2.处理缺失值

“NaN”项代表缺失值。 为了处理缺失的数据,典型的方法包括插值法删除法, 其中插值法用一个替代值弥补缺失值,而删除法则直接忽略缺失值。 

 

通过位置索引iloc,我们将data分成inputsoutputs, 其中前者为data的前两列,而后者为data的最后一列。 对于inputs中缺少的数值,我们用同一列的均值替换“NaN”项。

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())
print(inputs)
 NumRooms Alley
0       3.0  Pave
1       2.0   NaN
2       4.0   NaN
3       3.0   NaN

 

对于inputs中的类别值或离散值,我们将“NaN”视为一个类别。 由于“巷子类型”(“Alley”)列只接受两种类型的类别值“Pave”和“NaN”, pandas可以自动将此列转换为两列“Alley_Pave”和“Alley_nan”。 巷子类型为“Pave”的行会将“Alley_Pave”的值设置为1,“Alley_nan”的值设置为0。 缺少巷子类型的行会将“Alley_Pave”和“Alley_nan”分别设置为0和1。

inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)
 NumRooms  Alley_Pave  Alley_nan
0       3.0           1          0
1       2.0           0          1
2       4.0           0          1
3       3.0           0          1

 

 

3.转化为张量格式

现在inputsoutputs中的所有条目都是数值类型,它们可以转换为张量格式。 

import torch

X = torch.tensor(inputs.to_numpy(dtype=float))
y = torch.tensor(outputs.to_numpy(dtype=float))
X, y
(tensor([[3., 1., 0.],
         [2., 0., 1.],
         [4., 0., 1.],
         [3., 0., 1.]], dtype=torch.float64),
 tensor([127500., 106000., 178100., 140000.], dtype=torch.float64))

 

标签:inputs,一篇,NaN,Alley,pandas,就够,Pave,data,预处理
From: https://www.cnblogs.com/yccy/p/17783615.html

相关文章

  • 我的第一篇51CTO博客
    大家好,我是zero,一名Linux运维工程师。我有3年的运维工作经验,主要负责公司业务系统的日常运维和故障排查。我的技术栈以Linux、Shell为主,熟悉LAMP架构的搭建和优化。最近两年,我参与了公司私有云项目的建设,使用OpenStack部署了计算、存储、网络等服务。并通过Python编写了云平......
  • 博客园官方博客发布了一篇名为《弹尽粮绝,会员救园:会员上线,命悬一线》
      博客园,一直以来都是程序员们的心灵家园。在遭遇了前所未有的危机后,它一度陷入了沉寂。但是,园主并没有放弃,而是积极寻求新的发展路径。最近,博客园官方博客发布了一篇名为《弹尽粮绝,会员救园:会员上线,命悬一线》的文章,详细介绍了园主们面临的困境和新的尝试。在这篇文章中,博......
  • 不知道怎么选CRM系统?看这篇就够了
     CRM客户管理系统近年来已经从简单的客户管理软件发展成为了帮助企业运营发展的工具。它能够帮助企业优化业务流程、提高客户转化率、获得更多业绩。那么企业在选择CRM系统时有什么要点吗?1、明确是否有自动化功能自动化功能可以自动处理那些手动且琐碎的销售流程,让您的销售人......
  • 机器学习——数据操作(读这一篇就够了!)
    为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。 首先,我们介绍维数组,也称为<strong><em>张量</em></strong>(tensor)。使用过Python中NumPy计算包的读者会对本部分很熟悉。无论使用哪个深度学习框架,它的&......
  • Opencv使用与编译之第一篇
    Opencv使用与编译-Opencv安装与使用一、安装opencv直接在官网下载即可,官网链接(点击左边跳转)。可自由选择是否使用已编译好的还是自行编译。已编译好的windows版本中是使用VisualStudio2015和VisualStudio2017编译器编译的(即VC14和VC15),当然其也包含了源代码。图1下......
  • Linux 软连接 ln -s 简单使用看这篇就够了
    全网很多文章讲源文件和目标文件,或者target和source哪个连到哪个完全没有讲清楚,一个不小心操作失误很容易造成源数据直接丢失!!! 1ln-s/A/B 这里A和B的路径要用绝对路径,执行这个命令就是在当前目录下把B指向A,也就是A是实际存在的,B是虚拟的假的......
  • 一篇文章解密如何轻松实现移动应用的电子和手绘PDF签名功能!
    对PDF文件签名是移动设备上越来越普遍的使用需求,本文将描述自动生成/“手绘”签名与如何使用DevExpressOfficeFileAPI组件来实现在.NETMAUI应用程序中快速合并签名/签名支持之间的区别。DevExpressOfficeFileAPI是一个专为C#,VB.NET和ASP.NET等开发人员提供的非可视化......
  • Go泛型全面讲解:一篇讲清泛型的全部
    @目录序言1.一切从函数的形参和实参说起2.Go的泛型3.类型形参、类型实参、类型约束和泛型类型3.1其他的泛型类型3.2类型形参的互相套用3.3几种语法错误3.4特殊的泛型类型3.5泛型类型的套娃3.6类型约束的两种选择3.7匿名结构体不支持泛型4.泛型receiver4.1基于泛型的队......
  • 【Python微信机器人】第一篇:在windows11上编译python
    前言我打算写一个系列,内容是将python注入到其他进程实现inlinehook和主动调用。本篇文章是这个系列的第一篇,后面用到的案例是注入python到PC微信实现基本的收发消息。文章着重于python方面的内容,所以对于微信找收发消息的call不会去讲过程,有兴趣的可以直接百度搜PC微信逆向。我......
  • 第一篇博客
    Markdown学习二级标题三级标题四级标题字体Hello,World!*Hello,World!**Hello,World!***Hello,World!~~引用选择狂神说Java,走向人生巅峰!>分割线三个中横杠或者三个星号就可以打出分割线图片超链接[点击跳转到狂神说博客](IT新闻-博客园(cnbl......