(一)机器学习数据处理
目录
1、获取数据
2、加载数据集
3、特征值和标签处理
4、制作可迭代的pytorch数据集 (选看)
数据处理工具首选pandas,如果你对pandas不了解,请参考我的上一篇博客的pandas操作总结。
上篇博客地址:pandas操作
1、获取数据
本文用的数据集是100种植物种类数据集,用于分类任务
数据集下载地址:100种树叶数据集
2、加载数据集
本文用到了其中的data_Tex_64.txt,使用pandas加载数据
import numpy as np
import pandas as pd
from sklearn import preprocessing#加载数据和标签
df = pd.read_csv('./data/100 leaves plant species/data_Tex_64.txt')
origin_feature = df.iloc[:, 1:]
origin_labels = df.iloc[:, 0]
3、特征值和标签处理
数据处理常使用sklearn.preprocessing的子模块来实现。
1、归一化(最小-最大规范化):将数据缩放到0~1之间,使用MinMaxScaler模块
#归一化
min_max_scaler = preprocessing.MinMaxScaler()
feature = min_max_scaler.fit_transform(origin_feature)#归一化还原
orgin_feature = min_max_scaler.inverse_transform(feature)
2、标准化(z-score规范化):将数据转化成均值为0,方差为1。使用 StandardScaler模块。先求出全部数据的均值和方差,再进行计算。最后的结果均值为0,方差是1。
注意:当原始数据并不符合高斯分布的话,标准化后的数据效果并不好,这时就不要使用标准化。
#标准化
s_scaler = preprocessing.StandardScaler()
feature = s_scaler.fit_transform(origin_feature)#数据还原
origin_feature = s_scaler.inverse_transform(feature)
3、标签编码(数字化)
很多标签是文本形式,这种格式没法用于训练模型,所以需要将文本标签转成数字标签。用到LabelEncoder模块。下图就是上面数据集的原始标签。
#标签数字化
le = preprocessing.LabelEncoder()
labels =le.fit_transform(origin_labels).astype(np.int64)#标签还原
labels = le.inverse_transform(labels)
4、one-hot编码(特征和标签):One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
上面数据集的标签是 [ 0 0 0 ... 99 99 99]。由于标签是一维,所以需要加【】变成二维,再转置成列向量。
one-hot编码可以由sklearn.preprocessing import OneHotEncoder和pandas里的get_dummies实现,OneHotEncoder只能处理数值型而get_dummies可以对其他特殊字符进行编码
1、使用preprocessing.onehotEncoder()编码
#one-hot编码
labels = np.array([labels]).T
enc = preprocessing.OneHotEncoder()
labels = enc.fit_transform(labels).toarray()#还原
origin_labels = enc.inverse_transform(labels)#查看多少类别
le.classes_
2、使用pandas的get_dummies模块对特征值进行one-hot编码
假如1.txt的数据如下:
对Cabin和Embarked列执行one-hot编码得到新得到df2,再跟去掉Cabin和Embarked的原始df1合并得到编码后的df
#用pandas里的get_dummies可以对字符特征变量Sex','Embarked'处理
import pandas as pddf1 = pd.read_csv('./data/1.txt')df2=pd.get_dummies(df1[['Carbin','Embarked']],drop_first=True) #借助concat函数把编码变量合并到原来数据
df=pd.concat([df1.drop(['Carbin','Embarked'],axis=1), df2],axis=1)
5、特征二值化:定量特征二值化的核心在于设定一个阈值,大于阈值的赋值为1,小于等于阈值的赋值为0
#特征二值化
binarizer = preprocessing.Binarizer(threshold=0.2)
feature = binarizer.transform(origin_feature)
6、标签二值化:
#标签二值化
lb = preprocessing.LabelBinarizer()
labels = lb.fit_transform(origin_labels)
7、划分数据集:
#划分数据集为训练集和测试集
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test= train_test_split(origin_feature, origin_labels,test_size=0.3,random_state=0)
4、制作可迭代的pytorch数据集 (选看)
方便pytorch框架操作数据)
#划分数据集
import torch
import numpy as np
import torch.utils.data as Data
from sklearn.model_selection import train_test_splitx_train, x_test, y_train,y_test = train_test_split(feature, labels, test_size=0.25)#制作pytorch识别的数据集
train_dataset = Data.TensorDataset(torch.from_numpy(x_train).float(), torch.from_numpy(y_train))
test_dataset = Data.TensorDataset(torch.from_numpy(x_test).float(), torch.from_numpy(y_test))#制作可迭代的数据集
train_iter = Data.DataLoader(dataset = train_dataset,batch_size = batch_size,shuffle = True, num_workers = 2)
test_iter = Data.DataLoader(dataset = test_dataset, batch_size= batch_size,shuffle = True, num_workers = 2)
制作完可迭代的数据集后,就可以方便的训练模型。
#循环一次,获得一批量的数据
for X, y in train_iter:print(X)print(y)break
下一篇博客:图片数据处理
(一)机器学习数据处理相关推荐
- 机器学习数据处理-数据归一化
目录 方差 标准差 相对标准偏差 正态分布 数据归一化 方差 概念 描述了一组数据距离他们平均值的离散程度 场景 如果一个班的平均分是50分,可能有两种极端情况: 大部分人都在50分左右附近徘徊 一半 ...
- python机器学习---数据处理---文本数据处理
目录 1.将文本数据进行特征提取 1.1英文文本---直接用CountVectorizer 1.2中文文本---先用结巴分词工具进行分词 2.将分词转为数组 2.1 基本词袋模型 2.2 改善词袋模型 ...
- (二)深度学习数据处理-----图片数据处理
如果你对数据处理不熟悉,可以看我的上篇博客,里面介绍了常用的数据处理方法 上篇博客地址:机器学习数据处理 目录 1.pytorch加载数据集 1.加载pytorch自带的数据集 2.图像读取和保存 1 ...
- 机器学习之Pandas教程(上)
1. 教程简介 本教程分为上.下两节,主要针对机器学习数据处理做的简单教程.本教程主要不是讲解pandas函数的使用,而是实验性的操作学习方式,对于使用本教程的学者,可以根据课程一步一步去实验,对于不 ...
- 机器学习必备知识之皮尔森系数实现
引言:最近几天帮几个人工智能专业的同学做了一些机器学习课程的大作业,我发现机器学习一些常见的数据处理方法他们并不会用程序表示出来,仅仅是停留在理论层面.那么今天我将就机器学习一些常见数据处理方式实现皮 ...
- 实用机器学习——建模前/后处理
文章目录 实用机器学习 数据处理 数据预处理的部分 数据预处理可视化分析的部分 数据清洗的部分 数据变形的部分 特征工程的部分 评估+调参 评估 调参 超参数优化 实用机器学习(中文版)-李沐:htt ...
- 机器学习项目1:鸢尾花分类
目录 0.先对需要安装的库进行版本检测 1.导入数据 1.1 导入需要的库: 1.2 导入数据集 2.概括数据 2.1 查看数据 2.2 查看数据的维度 2.3 统计描述数据 2.4 数据分类分布 3 ...
- 图像分类之食物分类(NCWU机器学习课程设计)
目录 1.实验要求 1.任务描述 2.数据集说明 2.实验分为两块,机器学习和深度学习 2.1 机器学习方法 2.1.1 机器学习数据处理 2.1.2 机器学习训练模型 2.1.3 机器学习数据分析 ...
- 想成为别人眼里的Python大牛,就必不可少的书单
在最新一期的话题中,80%读者认为Python是最好的编程语言,知乎上类似的问题也很多,例如如何入门Python?如何3个月内入门Python?虽然现在可以学习的Python途径很多,但是想要打好牢固 ...
最新文章
- Android 标签 (FlexboxLayout实现标签)
- Android——怎么引入okhttp3
- hdu 4501(三维背包问题)
- Android窗口View层次
- java array 元素的位置_java中的两种排序工具Arrays和Collections的使用
- spring 线程安全
- Windows Azure Web Site (17) 设置Web App TimeOut时间
- AAC规格(LC,HE,HEv2)及性能对比
- python读取excel数据生成word_利用Python将excel数据读取到word表格
- UE4 Pak 相关知识总结
- Python批量下载XKCD漫画只需20行命令!
- 图片存储方案介绍---七牛云存储
- 微商怎么做大做强,教你一套做微商全新打法
- 电阻式触摸屏的工作原理
- 计算机科学与技术专业为什么要学物理,「物理」一定要好的14个大学专业
- torch.bmm()验证
- 图形学 ---- 二维几何变换(二维图形矩阵平移,旋转,缩放)
- r软件中合并列_将摘要合并到软件中
- 计算机windows7教程,win7系统教程
- 颠覆麦肯锡、BCG,这家公司的AI商业决策系统能做到吗?
热门文章
- Codeforces Round #481 (Div. 3)【完结】
- 2021夏季每日一题 【week7 完结】
- C语言在不引入第三变量下交换俩数
- MySQL中的数据分组
- MySQL创建普通用户
- linux6.6挂载u盘失败,mini2440 Linux系统自动挂载U盘与SD卡失败 解决方法
- gradle 指定springcloud 版本_Gradle初探
- python作者龟叔_Python基础 — Python简介
- 【Java】使用Java调用Python的四种方法
- API 分页探讨:offset 来分页真的有效率吗?