最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python sklearn KFold 生成交叉驗證數(shù)據(jù)集的方法

 更新時間:2018年12月11日 15:13:49   作者:Ichimaru_Gin_  
今天小編就為大家分享一篇Python sklearn KFold 生成交叉驗證數(shù)據(jù)集的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

源起:

1.我要做交叉驗證,需要每個訓(xùn)練集和測試集都保持相同的樣本分布比例,直接用sklearn提供的KFold并不能滿足這個需求。

2.將生成的交叉驗證數(shù)據(jù)集保存成CSV文件,而不是直接用sklearn訓(xùn)練分類模型。

3.在編碼過程中有一的誤區(qū)需要注意:

這個sklearn官方給出的文檔

>>> import numpy as np
>>> from sklearn.model_selection import KFold
 
>>> X = ["a", "b", "c", "d"]
>>> kf = KFold(n_splits=2)
>>> for train, test in kf.split(X):
...  print("%s %s" % (train, test))
[2 3] [0 1]
[0 1] [2 3]

我之前犯的一個錯誤是將train,test理解成原數(shù)據(jù)集分割成子數(shù)據(jù)集之后的子數(shù)據(jù)集索引。而實際上,它就是原始數(shù)據(jù)集本身的樣本索引。

源碼:

# -*- coding:utf-8 -*-
# 得到交叉驗證數(shù)據(jù)集,保存成CSV文件
# 輸入是一個包含正常惡意標簽的完整數(shù)據(jù)集,在讀數(shù)據(jù)的時候分開保存到datasetBenign,datasetMalicious
# 分別對兩個數(shù)據(jù)集進行KFold,最后合并保存
 
from sklearn.model_selection import KFold
import csv
 
def writeInFile(benignKFTrain, benignKFTest, maliciousKFTrain, maliciousKFTest, i, datasetBenign, datasetMalicious):
 newTrainFilePath = "E:\\hadoopExperimentResult\\5KFold\\AllDataSetIIR10\\dataset\\ImbalancedAllTraffic-train-%s.csv" % i
 newTestFilePath = "E:\\hadoopExperimentResult\\5KFold\\AllDataSetIIR10\\dataset\\IImbalancedAllTraffic-test-%s.csv" % i
 newTrainFile = open(newTrainFilePath, "wb")# wb 為防止空行
 newTestFile = open(newTestFilePath, "wb")
 writerTrain = csv.writer(newTrainFile)
 writerTest = csv.writer(newTestFile)
 for index in benignKFTrain:
  writerTrain.writerow(datasetBenign[index])
 for index in benignKFTest:
  writerTest.writerow(datasetBenign[index])
 for index in maliciousKFTrain:
  writerTrain.writerow(datasetMalicious[index])
 for index in maliciousKFTest:
  writerTest.writerow(datasetMalicious[index])
 newTrainFile.close()
 newTestFile.close()
 
 
def getKFoldDataSet(datasetPath):
 # CSV讀取文件
 # 開始從文件中讀取全部的數(shù)據(jù)集
 datasetFile = file(datasetPath, 'rb')
 datasetBenign = []
 datasetMalicious = []
 readerDataset = csv.reader(datasetFile)
 for line in readerDataset:
  if len(line) > 1:
   curLine = []
   curLine.append(float(line[0]))
   curLine.append(float(line[1]))
   curLine.append(float(line[2]))
   curLine.append(float(line[3]))
   curLine.append(float(line[4]))
   curLine.append(float(line[5]))
   curLine.append(float(line[6]))
   curLine.append(line[7])
   if line[7] == "benign":
    datasetBenign.append(curLine)
   else:
    datasetMalicious.append(curLine)
 
 # 交叉驗證分割數(shù)據(jù)集
 K = 5
 kf = KFold(n_splits=K)
 benignKFTrain = []; benignKFTest = []
 for train,test in kf.split(datasetBenign):
  benignKFTrain.append(train)
  benignKFTest.append(test)
 maliciousKFTrain=[]; maliciousKFTest=[]
 for train,test in kf.split(datasetMalicious):
  maliciousKFTrain.append(train)
  maliciousKFTest.append(test)
 for i in range(K):
  print "======================== "+ str(i)+ " ========================"
  print benignKFTrain[i], benignKFTest[i]
  print maliciousKFTrain[i],maliciousKFTest[i]
  writeInFile(benignKFTrain[i], benignKFTest[i], maliciousKFTrain[i], maliciousKFTest[i], i, datasetBenign,
     datasetMalicious)
 
 datasetFile.close()
 
 
if __name__ == "__main__":
 
 getKFoldDataSet(r"E:\hadoopExperimentResult\5KFold\AllDataSetIIR10\dataset\ImbalancedAllTraffic-10.csv")

以上這篇Python sklearn KFold 生成交叉驗證數(shù)據(jù)集的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)經(jīng)典算法拓撲排序、字符串匹配算法和最小生成樹實例

    Python實現(xiàn)經(jīng)典算法拓撲排序、字符串匹配算法和最小生成樹實例

    這篇文章主要介紹了Python實現(xiàn)經(jīng)典算法拓撲排序、字符串匹配算法和最小生成樹實例,拓撲排序、字符串匹配算法和最小生成樹是計算機科學(xué)中常用的數(shù)據(jù)結(jié)構(gòu)和算法,它們在解決各種實際問題中具有重要的應(yīng)用價值,需要的朋友可以參考下
    2023-08-08
  • 解決pymysql cursor.fetchall() 獲取不到數(shù)據(jù)的問題

    解決pymysql cursor.fetchall() 獲取不到數(shù)據(jù)的問題

    這篇文章主要介紹了解決pymysql cursor.fetchall() 獲取不到數(shù)據(jù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python如何獲取模塊中類以及類的屬性方法信息

    Python如何獲取模塊中類以及類的屬性方法信息

    python對屬性權(quán)限的控制是通過屬性名來實現(xiàn)的,下面這篇文章主要給大家介紹了關(guān)于Python如何獲取模塊中類以及類的屬性方法信息的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • Python Tornado之跨域請求與Options請求方式

    Python Tornado之跨域請求與Options請求方式

    這篇文章主要介紹了Python Tornado之跨域請求與Options請求方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Python基于回溯法子集樹模板解決取物搭配問題實例

    Python基于回溯法子集樹模板解決取物搭配問題實例

    這篇文章主要介紹了Python基于回溯法子集樹模板解決取物搭配問題,簡單描述了搭配問題并結(jié)合實例形式分析了Python使用回溯法子集樹模板解決取物搭配問題的具體步驟與相關(guān)操作技巧,需要的朋友可以參考下
    2017-09-09
  • Python中的列表生成式與生成器學(xué)習(xí)教程

    Python中的列表生成式與生成器學(xué)習(xí)教程

    這篇文章主要介紹了Python中的列表生成式與生成器學(xué)習(xí)教程,Python中的Generator生成器比列表生成式功能更為強大,需要的朋友可以參考下
    2016-03-03
  • python中argparse模塊及action='store_true'詳解

    python中argparse模塊及action='store_true'詳解

    argparse?是一個用來解析命令行參數(shù)的?Python?庫,它是?Python?標準庫的一部分,這篇文章主要介紹了python中argparse模塊及action=‘store_true‘詳解,需要的朋友可以參考下
    2023-02-02
  • Python使用WebSocket和SSE實現(xiàn)HTTP服務(wù)器消息推送方式

    Python使用WebSocket和SSE實現(xiàn)HTTP服務(wù)器消息推送方式

    本文介紹了兩種實時數(shù)據(jù)獲取的技術(shù):WebSocket和SSE,WebSocket是全雙工通信協(xié)議,支持雙向通信,但需要專門定義數(shù)據(jù)協(xié)議,SSE是一種單工通信技術(shù),基于HTTP的流式數(shù)據(jù)傳輸,客戶端開發(fā)簡單,但只能單工通信
    2024-11-11
  • Python學(xué)習(xí)之列表和元組的使用詳解

    Python學(xué)習(xí)之列表和元組的使用詳解

    如果說在Python語言中找一個最優(yōu)秀的數(shù)據(jù)類型,那無疑是列表,如果要在推薦一個,那我選擇元組。本篇文章我們的重心會放在列表上,元組可以看成不能被修改的列表,感興趣的可以了解一下
    2022-10-10
  • Python使用自帶的base64庫進行base64編碼和解碼

    Python使用自帶的base64庫進行base64編碼和解碼

    在Python中,處理數(shù)據(jù)的編碼和解碼是數(shù)據(jù)傳輸和存儲中非常普遍的需求,其中,Base64是一種常用的編碼方案,本文我將詳細介紹如何使用Python的base64庫進行Base64編碼和解碼,需要的朋友可以參考下
    2025-04-04

最新評論

平利县| 新源县| 天峨县| 杭州市| 恩平市| 宜宾县| 措美县| 房山区| 闻喜县| 甘泉县| 舟曲县| 尉犁县| 通渭县| 绥德县| 安多县| 彭山县| 万宁市| 儋州市| 山西省| 南澳县| 常德市| 巴东县| 额尔古纳市| 肥东县| 含山县| 兴城市| 南投县| 思茅市| 武穴市| 丽江市| 孝昌县| 兴海县| 南漳县| 新龙县| 全南县| 巴里| 南阳市| 台南县| 临汾市| 永德县| 子长县|