日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/10/14 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 处理自己的数据集_手写代码实现KDD CUP99数据集的数据归一化处理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

歸一化是數(shù)據(jù)處理的常用方法之一,目的是消除不同評(píng)價(jià)指標(biāo)之間的量綱對(duì)數(shù)據(jù)分析結(jié)果的影響,使各指標(biāo)處于同一數(shù)量級(jí),以解決數(shù)據(jù)指標(biāo)之間的可比性問(wèn)題。

目前學(xué)術(shù)界關(guān)于歸一化和標(biāo)準(zhǔn)化的概念還不統(tǒng)一,常常會(huì)把這兩個(gè)概念混用,但它們都是特征處理的一種方法,具體區(qū)別看公式就好區(qū)分了。這的歸一化是指min-max歸一化(Min-Max Normalization),基于數(shù)據(jù)的最小值和最大值對(duì)原始數(shù)據(jù)做線(xiàn)性變換,將結(jié)果值映射到[0 , 1]之間,歸一化公式如下:

其實(shí),在sklearn庫(kù)中已經(jīng)有非常優(yōu)秀的數(shù)據(jù)歸一化函數(shù)——MinMaxScaler(),我們只需要調(diào)用該函數(shù)就可以輕松實(shí)現(xiàn)數(shù)據(jù)歸一化處理。但是這里為了加深對(duì)數(shù)據(jù)歸一化的理解,就自己編寫(xiě)了一個(gè)數(shù)據(jù)歸一化的程序。

數(shù)據(jù)集準(zhǔn)備

在對(duì)kdd數(shù)據(jù)集標(biāo)準(zhǔn)化之前,需要先對(duì)數(shù)據(jù)集進(jìn)行數(shù)值化處理,可以參考我上一篇文章:

追夢(mèng)小公子:手寫(xiě)代碼實(shí)現(xiàn)KDD CUP99數(shù)據(jù)集的數(shù)據(jù)數(shù)值化處理?zhuanlan.zhihu.com

數(shù)值化處理后的kdd數(shù)據(jù)集文件為kddcup.data.numerization.txt,百度網(wǎng)盤(pán)下載鏈接:

kddcup.data.numerization.txt685.4M · 百度網(wǎng)盤(pán)

但是kdd數(shù)據(jù)集的第4817100行數(shù)據(jù)存在錯(cuò)誤,如圖1所示。

圖1 kdd數(shù)據(jù)集的錯(cuò)誤行數(shù)據(jù)

該行數(shù)據(jù)有56列,比正常數(shù)據(jù)多了14個(gè)特征,說(shuō)明這行數(shù)據(jù)是錯(cuò)誤的。所以在數(shù)值化處理后,我手動(dòng)刪除了錯(cuò)誤的那一行數(shù)據(jù),得到數(shù)值化并修正后的kdd數(shù)據(jù)集文件kddcup.data.numerization_corrected.txt,這也是本文用的數(shù)據(jù)集,百度網(wǎng)盤(pán)下載鏈接為:

kddcup.data.numerization_corrected.txt685.4M · 百度網(wǎng)盤(pán)

---------------------------------------------代碼---------------------------------------------

導(dǎo)入所需的庫(kù)

import numpy as np import csv from time import *

讀取數(shù)據(jù)集文件

global x_data # 定義全局變量 begin_time = time() # 讀取文件開(kāi)始時(shí)間 data_numerization = open("kddcup.data.numerization_corrected.txt") # 打開(kāi)數(shù)值化后的kdd數(shù)據(jù)集文件 lines = data_numerization.readlines() # 按行讀取所有數(shù)據(jù),并返回列表 line_nums = len(lines) x_data = np.zeros((line_nums, 42)) # 創(chuàng)建line_nums行 para_num列的矩陣 for i in range(line_nums):line = lines[i].strip().split(',')x_data[i, :] = line[0:42] # 獲取42個(gè)特征 data_numerization.close() print('數(shù)據(jù)集大小:',x_data.shape)# 耗時(shí)分析 end_time = time() # 讀取文件結(jié)束時(shí)間 total_time = end_time-begin_time # 讀取文件耗時(shí) print('讀取文件耗時(shí):',total_time,'s')

定義數(shù)據(jù)歸一化函數(shù)

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() # 歸一化開(kāi)始時(shí)間 for i in range(42):MinMax_Normalization(x_data[:, i], i)# 耗時(shí)分析 end_time = time() # 歸一化結(jié)束時(shí)間 total_time = end_time-begin_time # 歸一化耗時(shí) print('歸一化耗時(shí):',total_time,'s')

將歸一化后的數(shù)據(jù)集寫(xiě)入文件

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('數(shù)據(jù)歸一化done!')

-------------------------------------------寫(xiě)在最后-------------------------------------------

由于本人精力與能力有限無(wú)法盡善盡美,如有錯(cuò)誤、疑問(wèn)或者建議,歡迎留言討論,希望這篇文章對(duì)您有所幫助。

原創(chuàng)文章,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處,商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán)。

與50位技術(shù)專(zhuān)家面對(duì)面20年技術(shù)見(jiàn)證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的处理自己的数据集_手写代码实现KDD CUP99数据集的数据归一化处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。