归一化是数据处理的常用方法之一,目的是消除不同评价指标之间的量纲对数据分析结果的影响,使各指标处于同一数量级,以解决数据指标之间的可比性问题。

目前学术界关于归一化和标准化的概念还不统一,常常会把这两个概念混用,但它们都是特征处理的一种方法,具体区别看公式就好区分了。这的归一化是指min-max归一化(Min-Max Normalization),基于数据的最小值和最大值对原始数据做线性变换,将结果值映射到[0 , 1]之间,归一化公式如下:

其实,在sklearn库中已经有非常优秀的数据归一化函数——MinMaxScaler(),我们只需要调用该函数就可以轻松实现数据归一化处理。但是这里为了加深对数据归一化的理解,就自己编写了一个数据归一化的程序。

数据集准备

在对kdd数据集标准化之前,需要先对数据集进行数值化处理,可以参考我上一篇文章:

追梦小公子:手写代码实现KDD CUP99数据集的数据数值化处理​zhuanlan.zhihu.com

数值化处理后的kdd数据集文件为kddcup.data.numerization.txt,百度网盘下载链接:

kddcup.data.numerization.txt
685.4M

·

百度网盘

但是kdd数据集的第4817100行数据存在错误,如图1所示。

图1 kdd数据集的错误行数据

该行数据有56列,比正常数据多了14个特征,说明这行数据是错误的。所以在数值化处理后,我手动删除了错误的那一行数据,得到数值化并修正后的kdd数据集文件kddcup.data.numerization_corrected.txt,这也是本文用的数据集,百度网盘下载链接为:

kddcup.data.numerization_corrected.txt
685.4M

·

百度网盘

---------------------------------------------代码---------------------------------------------

导入所需的库

import numpy as np
import csv
from time import *

读取数据集文件

global x_data                           # 定义全局变量
begin_time = time()                     # 读取文件开始时间
data_numerization = open("kddcup.data.numerization_corrected.txt") # 打开数值化后的kdd数据集文件
lines = data_numerization.readlines()   # 按行读取所有数据,并返回列表
line_nums = len(lines)
x_data = np.zeros((line_nums, 42))      # 创建line_nums行 para_num列的矩阵
for i in range(line_nums):line = lines[i].strip().split(',')x_data[i, :] = line[0:42]           # 获取42个特征
data_numerization.close()
print('数据集大小:',x_data.shape)# 耗时分析
end_time = time()                      # 读取文件结束时间
total_time = end_time-begin_time       # 读取文件耗时
print('读取文件耗时:',total_time,'s')

定义数据归一化函数

def MinMax_Normalization(x, n):if np.max(x)-np.min(x) == 0:x_data[:, n] = 0else:x_data[:, n] = (np.max(x) - np.min(x)) / (np.max(x) - np.min(x))print("The ", n , "feature  is normalization.")

获取每一列特征,并依次归一化

begin_time = time()                     # 归一化开始时间
for i in range(42):MinMax_Normalization(x_data[:, i], i)# 耗时分析
end_time = time()                      # 归一化结束时间
total_time = end_time-begin_time       # 归一化耗时
print('归一化耗时:',total_time,'s')

将归一化后的数据集写入文件

data_normalization = open("kddcup.data.numerization_corrected_normalization.txt",'w', newline='')
csv_writer = csv.writer(data_normalization)
i = 0
while i<len(x_data[:, 0]):csv_writer.writerow(x_data[i, :])i = i + 1
data_normalization.close()
print('数据归一化done!')

-------------------------------------------写在最后-------------------------------------------

由于本人精力与能力有限无法尽善尽美,如有错误、疑问或者建议,欢迎留言讨论,希望这篇文章对您有所帮助。

原创文章,非商业转载请注明出处,商业转载请联系作者获得授权。

处理自己的数据集_手写代码实现KDD CUP99数据集的数据归一化处理相关推荐

  1. 基于卷积神经网络的手写数字识别(附数据集+完整代码+操作说明)

    基于卷积神经网络的手写数字识别(附数据集+完整代码+操作说明) 配置环境 1.前言 2.问题描述 3.解决方案 4.实现步骤 4.1数据集选择 4.2构建网络 4.3训练网络 4.4测试网络 4.5图 ...

  2. 基于TensorFlow和mnist数据集的手写数字识别系统 ,可识别电话号码,识别准确率高,有对比实验,两组模型,可讲解代码

    基于TensorFlow和mnist数据集的手写数字识别系统 ,可识别电话号码,识别准确率高,有对比实验,两组模型,可讲解代码

  3. python是如何实现进程池和线程池的_高并发:线程、线程锁与线程池(精华),手写代码实现线程池...

    前文: 单线程--多线程的开启--线程锁--线程同步工具--手写连接池--连接池工具类. 一.线程 1.线程的概念 2.线程与进程的关系 3.定义: 区别:如上!!! 4.wait()和sleep() ...

  4. python手写代码面试_常见Python面试题—手写代码系列

    原标题:常见Python面试题-手写代码系列 1.如何反向迭代一个序列 #如果是一个list,最快的方法使用reverse tempList = [1,2,3,4] tempList.reverse( ...

  5. python手写代码面试_常见Python面试题 — 手写代码系列

    原标题:常见Python面试题 - 手写代码系列 作者: Peace & Love 来自:https://blog.csdn.net/u013205877/article/details/77 ...

  6. 【深度学习】深度学习手写代码汇总(建议收藏,面试用)

    这几天一些同学在面试的时候,遇到了一些手写代码的题,因为之前都没有准备到,所以基本上在写的时候都有点蒙. 今天我就把一些常见的考题给大家整理下,这些题也是我之前准备面试的时候整理的,很多的代码都是网上 ...

  7. 揭秘 ClownFish 比手写代码还快的原因

    说明:本文的第一版由于反对人数较多(推荐/反对数量是:23 / 17), 我在8月20日删除了博文内容,只留下一段简单的内容. 既然分享技术也引来这么多的反对,那我就不分享了. 如果希望知道我的优化方 ...

  8. DL之CNN:自定义SimpleConvNet【3层,im2col优化】利用mnist数据集实现手写数字识别多分类训练来评估模型

    DL之CNN:自定义SimpleConvNet[3层,im2col优化]利用mnist数据集实现手写数字识别多分类训练来评估模型 目录 输出结果 设计思路 核心代码 更多输出 输出结果 设计思路 核心 ...

  9. DL之LiRDNNCNN:利用LiR、DNN、CNN算法对MNIST手写数字图片(csv)识别数据集实现(10)分类预测

    DL之LiR&DNN&CNN:利用LiR.DNN.CNN算法对MNIST手写数字图片(csv)识别数据集实现(10)分类预测 目录 输出结果 设计思路 核心代码 输出结果 数据集:Da ...

最新文章

  1. [Microsoft][ODBC SQL Server Driver]TDS 缓冲区长度过大
  2. Qt中的QBoxLayout
  3. JQuery 总结(1) 选择器的使用
  4. oracle逻辑备份和物理备份,oracle数据库物理备份和逻辑备份区别
  5. 读上瘾-让用户养成习惯
  6. 移动端H5 页面 input 获取焦点不灵敏
  7. 学习笔记 Tianmao 篇 使用简单封装后的自定义OkHttp 获取json被GSON解析后的数据
  8. rk3288 android4.4,RK3288 Android4.4使用A6212,wifi可以用但是蓝牙起不来
  9. 关于STM32L476位带操作的说明
  10. Pytorch中torch.nn.DataParallel负载均衡问题
  11. ip地址:string和int互转方案
  12. vc.60写c语言,悟空问答如何用VC60编写简单的APP
  13. python3 结束进程
  14. 硬盘安装mysql_安装mysql数据库
  15. Knowledge-aware Graph Neural Networks with Label Smoothness Regularization for Recommender Systems
  16. HTML径向效果,HTML5版径向渐变梯度色彩
  17. //我一次黑别人的电脑时的技术经过!
  18. my read travel
  19. 一个大学生从月薪3500到700万和他的情感经历
  20. 图解固件、驱动、软件的区别

热门文章

  1. 【自己动手写神经网络】小白入门连载(二)--机器人时代必须得有人工神经(不是神经病)...
  2. python中利用matplotlib画图
  3. 【收藏】编译安装keepalived
  4. k8s部署oracle-ee-11g:部署、集群内外连接oracle的方式
  5. Jenkins添加从节点相关配置
  6. 利用神器BTrace 追踪线上 Spring Boot应用运行时信息
  7. Python Django 多表设计OneToOneField/ManyToManyField/ForeignKey
  8. Linux 创建和删除目录命令mkdir、rmdir
  9. 【软考-软件设计师】输入/输出技术
  10. MongoDB自定义条件查询案例