Python資料磁碟儲存pickle 決策樹的儲存

2021-08-13 05:21:11 字數 1482 閱讀 6762

為了節省計算時間,很多時候資料都會直接被儲存在磁碟上。在python中,需要使用python模組pickle序列化物件,序列化物件可以在磁碟上儲存物件,並在需要的時候讀取出來。例如,使用pickle模組儲存決策樹:

import pickle

#建立資料集

defcreatedataset

(): dataset = [[1, 1, 'yes'],

[1, 1, 'yes'],

[1, 0, 'no'],

[0, 1, 'no'],

[0, 1, 'no']]

labels = ['no su***cing', 'flippers']

return dataset, labels

#儲存def

storetree

(inputtree, filename):

import pickle

fw = open(filename, 'wb') #以二進位制讀寫方式開啟檔案

pickle.dump(inputtree, fw) #pickle.dump(物件, 檔案,[使用協議])。序列化物件

# 將要持久化的資料「物件」,儲存到「檔案」中,使用有3種,索引0為ascii,1是舊式2進製,2是新式2進製協議,不同之處在於後者更高效一些。

#預設的話dump方法使用0做協議

fw.close() #關閉檔案

#讀取def

grabtree

(filename):

import pickle

fr = open(filename, 'rb')

return pickle.load(fr) #讀取檔案,反序列化

mydat, labels = createdataset()

mytree = treeplotter.retrievetree(0)

storetree(mytree, 'classifierstorage.txt')

#生成的txt檔案儲存在當前的檔案目錄下

print(grabtree('classifierstorage.txt'))

note :在python2中可以使用:

fw = open(filename, 'w')

fr = open(filename)

若在python3中使用,則會出現報錯:

typeerror: write() argument must be str, not

bytes

此時,需要使用』wb』二進位制形式讀取檔案。若出現報錯:

unicodedecodeerror: 'utf-8' codec can't decode byte 0x80

in position 0: invalid start byte

則是沒有使用』rb』二進位制形式開啟檔案。

磁碟儲存1

磁碟儲存 磁碟是廣為應用的儲存大量資料的儲存裝置,儲存資料的數量級可以達到幾百到幾千千兆位元組,而基於ram的儲存器只能有幾百或幾千兆位元組。不過,從磁碟上讀資訊的時間位毫秒級,比從dram讀慢了10萬倍,比從sram讀慢了100萬倍。1.磁碟構造 磁碟是由碟片構成的。每個碟片有兩面或者稱為表面,表...

磁碟儲存原理

磁碟是廣泛應用的資料儲存裝置,儲存容量比較大,相比ram等儲存裝置 低,讀寫速度慢,從磁碟讀資訊的時間是毫秒級,是dram的十萬倍,sram的一百萬倍,後面會對磁碟讀取資料耗時計算進行詳細的介紹。磁碟由多個碟片 platter 構成,每個碟片都有兩面。碟片表面覆蓋著磁性材料用於記錄資訊,碟片 有乙個...

資料是如何儲存在磁碟的

我們腦子裡理解資料的儲存就是 乙個庫裡面有一些表,表裡面有很多字段,然後有很多行資料 但其實這只是我們的邏輯概念,資料在磁碟物理儲存方式可不是這樣的。mysql在伺服器上是以乙個資料夾的形式出現的,你建立了test資料庫,那麼在磁碟上就會出現test的目錄,而建立的那些表,其實都是有乙個表空間的概念...