• <sub id="pqc61"><p id="pqc61"></p></sub><sub id="pqc61"></sub>
    在线精品视频一区二区,亚洲中文字幕无码一久久区,正在播放肥臀熟妇在线视频,国内精品视频一区二区三区八戒 ,国产毛片三区二区一区,国产精品一区中文字幕,丰满少妇被猛烈进出69影院,国产成人无码
    您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產(chǎn)品體驗(yàn),強(qiáng)烈建議使用更快更安全的瀏覽器
    此為臨時(shí)鏈接,僅用于文章預(yù)覽,將在時(shí)失效
    人工智能開發(fā)者 正文
    發(fā)私信給AI研習(xí)社-譯站
    發(fā)送

    0

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    本文作者: AI研習(xí)社-譯站 2020-12-17 16:51
    導(dǎo)語:數(shù)據(jù)量太多難以處理?解決方法各有千秋。

    譯者:AI研習(xí)社(季一帆

    雙語原文鏈接:Tutorial on reading large datasets


    大規(guī)模數(shù)據(jù)集

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    對數(shù)據(jù)科學(xué)家和Kaggler來說,數(shù)據(jù)永遠(yuǎn)不嫌多。

    我敢肯定,你在解決某些問題時(shí),一定報(bào)怨過沒有足夠的數(shù)據(jù),但偶爾也會抱怨數(shù)據(jù)量太多難以處理。本文探討的問題就是對超大規(guī)模數(shù)據(jù)集的處理。

    在數(shù)據(jù)過多的情況下,最常見的解決方案是根據(jù)RAM采樣適量數(shù)據(jù),但這卻浪費(fèi)了未使用的數(shù)據(jù),甚至可能導(dǎo)致信息缺失問題。針對這些問題,研究人員提出多種不同的非子采樣方法。需要注意的時(shí),某一方法是無法解決所有問題的,因此在不同情況下要根據(jù)具體需求選擇恰當(dāng)?shù)慕鉀Q方案。

    本文將對一些相關(guān)技術(shù)進(jìn)行描述和總結(jié)。由于Riiid! Answer Correctness Prediction數(shù)據(jù)集由10列,超1億行的數(shù)據(jù)組成,在Kaggle Notebook中使用pd.read_csv方法讀取會導(dǎo)致內(nèi)存不足,因此本文將該數(shù)據(jù)集做為典型示例。

    不同安裝包讀取數(shù)據(jù)的方式有所不同,Notebook中可用方法包括(默認(rèn)為Pandas,按字母表排序):

    除了從csv文件讀取數(shù)據(jù)外,還可以將數(shù)據(jù)集轉(zhuǎn)換為占有更少磁盤空間、更少內(nèi)存、讀取速度快的其他格式。Notebook可處理的文件類型包括(默認(rèn)csv,按字母表排序):

    請注意,在實(shí)際操作中不單單是讀取數(shù)據(jù)這么簡單,還要同時(shí)考慮數(shù)據(jù)的下游任務(wù)和應(yīng)用流程,綜合衡量以確定讀取方法。本文對此不做過多介紹,讀者可自行查閱相關(guān)資料。

    同時(shí),你還會發(fā)現(xiàn),對于不同數(shù)據(jù)集或不同環(huán)境,最有效的方法往往是不同的,也就是所,沒有哪一種方法就是萬能的。

    后續(xù)會陸續(xù)添加新的數(shù)據(jù)讀取方法。

    方法

    我們首先使用Notebook默認(rèn)的pandas方法,如前文所述,這樣的讀取因內(nèi)存不足失敗。

    import pandas as pd
    import dask.dataframe as dd

    # confirming the default pandas doesn't work (running thebelow code should result in a memory error)
    # data = pd.read_csv("../input/riiid-test-answer-prediction/train.csv")

    Pandas介紹

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    Pandas是最常用的數(shù)據(jù)集讀取方法,也是Kaggle的默認(rèn)方法。Pandas功能豐富、使用靈活,可以很好的讀取和處理數(shù)據(jù)。

    使用pandas讀取大型數(shù)據(jù)集的挑戰(zhàn)之一是其保守性,同時(shí)推斷數(shù)據(jù)集列的數(shù)據(jù)類型會導(dǎo)致pandas dataframe占用大量非必要內(nèi)存。因此,在數(shù)據(jù)讀取時(shí),可以基于先驗(yàn)知識或樣品檢查預(yù)定義列數(shù)據(jù)的最佳數(shù)據(jù)類型,避免內(nèi)存損耗。

    RiiiD競賽官方提供的數(shù)據(jù)集讀取方法就是如此。

    幫助文檔: https://pandas.pydata.org/docs/

    %%time
    dtypes = {
       "row_id": "int64",
       "timestamp": "int64",
       "user_id": "int32",
       "content_id": "int16",
       "content_type_id": "boolean",
       "task_container_id": "int16",
       "user_answer": "int8",
       "answered_correctly": "int8",
       "prior_question_elapsed_time": "float32",
       "prior_question_had_explanation": "boolean"}
    data = pd.read_csv("../input/riiid-test-answer-prediction/train.csv", dtype=dtypes)
    print("Train size:", data.shape)
    Train size: (101230332, 10)
    CPU times: user 8min 11s, sys: 10.8 s, total: 8min 22s
    Wall time: 8min 22s
    data.head()

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    Dask介紹

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    Dask提供并行處理框架對pandas工作流進(jìn)行擴(kuò)展,其與Spark具有諸多相似之處。

    幫助文檔:https://docs.dask.org/en/latest/

    %%time
    dtypes = {
       "row_id": "int64",
       "timestamp": "int64",
       "user_id": "int32",
       "content_id": "int16",
       "content_type_id": "boolean",
       "task_container_id": "int16",
       "user_answer": "int8",
       "answered_correctly": "int8",
       "prior_question_elapsed_time": "float32",
       "prior_question_had_explanation": "boolean"}
    data = dd.read_csv("../input/riiid-test-answer-prediction/train.csv", dtype=dtypes).compute()
    print("Train size:", data.shape)
    Train size: (101230332, 10)
    CPU times: user 9min 24s, sys: 28.8 s, total: 9min 52s

    Wall time: 7min 41s

    data.head()



    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    Datatable介紹

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    受R語言data.table的啟發(fā),python中提出Datatable,該包可快速讀取大型數(shù)據(jù)集,一般要比pandas快得多。值得注意的是,該包專門用于處理表格數(shù)據(jù)集,能夠快速讀取大規(guī)模的表格數(shù)據(jù)集。

    幫助文檔:https://datatable.readthedocs.io/en/latest/index.html

    # datatable installation with internet
    # !pip install datatable==0.11.0 > /dev/null

    # datatable installation without internet!
    pip install ../input/python-datatable/datatable-0.11.0-cp37-cp37m-manylinux2010_x86_64.whl > /dev/null

    import datatable as dt
    %%time
    data = dt.fread("../input/riiid-test-answer-prediction/train.csv")
    print("Train size:", data.shape)Train size: (101230332, 10)
    CPU times: user 52.5 s, sys: 18.4 s, total: 1min 10s
    Wall time: 20.5 sdata.head()


    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    10*10

    Rapids介紹

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    Rapids提供了在GPU上處理數(shù)據(jù)的方法。通過將機(jī)器學(xué)習(xí)模型轉(zhuǎn)移到GPU,Rapids可以在一個(gè)或多個(gè)GPU上構(gòu)建端到端的數(shù)據(jù)解決方案。

    幫助文檔:https://docs.rapids.ai/

    # rapids installation (make sure to turn on GPU)
    import sys
    !cp ../input/rapids/rapids.0.15.0 /opt/conda/envs/rapids.tar.gz
    !cd /opt/conda/envs/ && tar -xzvf rapids.tar.gz > /dev/null
    sys.path = ["/opt/conda/envs/rapids/lib/python3.7/site-packages"] + sys.path
    sys.path = ["/opt/conda/envs/rapids/lib/python3.7"] + sys.path
    sys.path = ["/opt/conda/envs/rapids/lib"] + sys.path

    import cudf
    %%time
    data = cudf.read_csv("../input/riiid-test-answer-prediction/train.csv")
    print("Train size:", data.shape)
    Train size: (101230332, 10)
    CPU times: user 4.58 s, sys: 3.31 s, total: 7.89 s

    Wall time: 30.7 s

    data.head()


    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    文件格式

    通常,我們會將數(shù)據(jù)集存儲為容易讀取、讀取速度快或存儲容量較小的格式。數(shù)據(jù)集存儲有各種不同的格式,但不是每一種都可以被處理,因此接下來,我們將介紹如何將這些數(shù)據(jù)集轉(zhuǎn)換為不同的格式。

    # data = dt.fread("../input/riiid-test-answer-prediction/train.csv").to_pandas()

    # writing dataset as csv
    # data.to_csv("riiid_train.csv", index=False)

    # writing dataset as hdf5
    # data.to_hdf("riiid_train.h5", "riiid_train")

    # writing dataset as feather
    # data.to_feather("riiid_train.feather")

    # writing dataset as parquet
    # data.to_parquet("riiid_train.parquet")

    # writing dataset as pickle
    # data.to_pickle("riiid_train.pkl.gzip")

    # writing dataset as jay
    # dt.Frame(data).to_jay("riiid_train.jay")

    數(shù)據(jù)集的所有格式可從此處獲取,不包括競賽組提供的原始csv數(shù)據(jù)。

    csv格式

    大多數(shù)Kaggle數(shù)據(jù)集都提供了csv格式文件。該格式幾乎成為數(shù)據(jù)集的標(biāo)準(zhǔn)格式,而且所有方法都支持從csv讀取數(shù)據(jù)。

    更多相關(guān)信息見: https://en.wikipedia.org/wiki/Comma-separated_values

    %%time
    dtypes = {
       "row_id": "int64",
       "timestamp": "int64",
       "user_id": "int32",
       "content_id": "int16",
       "content_type_id": "boolean",
       "task_container_id": "int16",
       "user_answer": "int8",
       "answered_correctly": "int8",
       "prior_question_elapsed_time": "float32",
       "prior_question_had_explanation": "boolean"}
    data = pd.read_csv("../input/riiid-test-answer-prediction/train.csv", dtype=dtypes)
    print("Train size:", data.shape)
    Train size: (101230332, 10)
    CPU times: user 8min 36s, sys: 11.3 s, total: 8min 48s
    Wall time: 8min 49s

    feather格式

    以feature(二進(jìn)制)格式存儲數(shù)據(jù)對于pandas極其友好,該格式提供了更快的讀取速度。

    了解更多信息:https://arrow.apache.org/docs/python/feather.html

    %%time
    data = pd.read_feather("../input/riiid-train-data-multiple-formats/riiid_train.feather")
    print("Train size:", data.shape)
    Train size: (101230332, 10)
    CPU times: user 2.59 s, sys: 8.91 s, total: 11.5 s
    Wall time: 5.19 s

    hdf5格式

    HDF5是用于存儲、管理和處理大規(guī)模數(shù)據(jù)和復(fù)雜數(shù)據(jù)的高性能數(shù)據(jù)管理組件。

    了解更多信息:https://www.hdfgroup.org/solutions/hdf5

    %%time
    data = pd.read_hdf("../input/riiid-train-data-multiple-formats/riiid_train.h5", "riiid_train")
    print("Train size:", data.shape)
    Train size: (101230332, 10)
    CPU times: user 8.16 s, sys: 10.7 s, total: 18.9 s
    Wall time: 19.8 s

    jay格式

    Datatable支持.jay(二進(jìn)制)格式,其在讀取jay格式數(shù)據(jù)時(shí)速度快得超乎想象。從下面的示例可以看到,該方法讀取整個(gè)riiid數(shù)據(jù)集用時(shí)甚至不到1秒!

    了解更多信息:https://datatable.readthedocs.io/en/latest/api/frame/to_jay.html

    %%time
    data = dt.fread("../input/riiid-train-data-multiple-formats/riiid_train.jay")
    print("Train size:", data.shape)
    Train size: (101230332, 10)
    CPU times: user 4.88 ms, sys: 7.35 ms, total: 12.2 ms
    Wall time: 38 ms

    parquet格式

    在Hadoop生態(tài)系統(tǒng)中,parquet是tabular的主要文件格式,同時(shí)還支持Spark。經(jīng)過近年的發(fā)展,該數(shù)據(jù)格式更加成熟,高效易用,pandas目前也支持了該數(shù)據(jù)格式。

    %%time
    data = pd.read_parquet("../input/riiid-train-data-multiple-formats/riiid_train.parquet")
    print("Train size:", data.shape)
    Train size: (101230332, 10)
    CPU times: user 29.9 s, sys: 20.5 s, total: 50.4 s
    Wall time: 27.3 s

    pickle格式

    Python對象可以以pickle格式存儲,pandas內(nèi)置支持pickle對象的讀取和寫入。

    了解更多信息:https://docs.python.org/3/library/pickle.html

    %%time
    data = pd.read_pickle("../input/riiid-train-data-multiple-formats/riiid_train.pkl.gzip")
    print("Train size:", data.shape)
    Train size: (101230332, 10)
    CPU times: user 5.65 s, sys: 7.08 s, total: 12.7 s
    Wall time: 15 s

    不同方法各有千秋

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    每種方法都有自己的優(yōu)缺點(diǎn),例如:

    • Pandas在處理大規(guī)模數(shù)據(jù)時(shí)對RAM的需求增加

    • Dask有時(shí)很慢,尤其是在無法并行化的情況下

    • Datatable沒有豐富的數(shù)據(jù)處理功能

    • Rapids只適用于GPU

    因此,希望讀者掌握不同的方法,并根據(jù)實(shí)際需求選擇最恰當(dāng)?shù)姆椒āN沂冀K相信,研究不是技術(shù)驅(qū)動的,技術(shù)方法只是手段,要有好主意、新想法、改進(jìn)技術(shù)才能推動數(shù)據(jù)科學(xué)的研究與發(fā)展。

    在經(jīng)過大量研究后,我確信不同數(shù)據(jù)集具有不同的適用方法,因此要多嘗試,千萬不要試圖一招半式闖江湖。

    在不斷更新的開源軟件包和活躍的社區(qū)支持下,數(shù)據(jù)科學(xué)必將持續(xù)蓬勃發(fā)展。


    AI研習(xí)社是AI學(xué)術(shù)青年和AI開發(fā)者技術(shù)交流的在線社區(qū)。我們與高校、學(xué)術(shù)機(jī)構(gòu)和產(chǎn)業(yè)界合作,通過提供學(xué)習(xí)、實(shí)戰(zhàn)和求職服務(wù),為AI學(xué)術(shù)青年和開發(fā)者的交流互助和職業(yè)發(fā)展打造一站式平臺,致力成為中國最大的科技創(chuàng)新人才聚集地。

    如果,你也是位熱愛分享的AI愛好者。歡迎與譯站一起,學(xué)習(xí)新知,分享成長。

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    數(shù)據(jù)太多而無法使用?快試試這個(gè)Kaggle大數(shù)據(jù)集高效訪問教程

    分享:
    相關(guān)文章

    知情人士

    AI研習(xí)社(yanxishe.com)譯站頻道,傳播前沿人工智能知識,讓語言不再成為學(xué)習(xí)知識的門檻。(原雷鋒字幕組)
    當(dāng)月熱門文章
    最新文章
    請?zhí)顚懮暾埲速Y料
    姓名
    電話
    郵箱
    微信號
    作品鏈接
    個(gè)人簡介
    為了您的賬戶安全,請驗(yàn)證郵箱
    您的郵箱還未驗(yàn)證,完成可獲20積分喲!
    請驗(yàn)證您的郵箱
    立即驗(yàn)證
    完善賬號信息
    您的賬號已經(jīng)綁定,現(xiàn)在您可以設(shè)置密碼以方便用郵箱登錄
    立即設(shè)置 以后再說
    主站蜘蛛池模板: 国产精品白浆视频一区| 影音先锋在线播放资源怕 | 无码精品人妻| 日韩成人无码毛片一区二区| 亚洲少妇人妻无码视频| 亚洲日韩精品一区二区三区无码| 特黄一级| 人妻日韩人妻中文字幕| 无码中文字幕乱码免费2| 精品人妻系列无码人妻免费视频| 婷婷伊人久久| 亚州精品熟女在线| 国产99久久亚洲综合精品| 亚洲熟女精品中文字幕m| 欧美丰满熟妇乱XXXXX网站| 久久亚洲AV日韩AV无码A小说| 国产不卡一区不卡二区| 精品国产一区二区三区国产馆| 午夜精品变态另类AV| 亚洲精品国产美女久久久99| 亚洲av尤物一区二区| 成a人片亚洲日本久久| 亚洲精品久久久久69影院| 亚洲成av人片在线观看www| 97福利| 孝义市| 免费观看成人久久网免费观看| 国产美女被遭强高潮免费一视频| 国产亚洲视频在线观看| 青草视频网站在线观看| 成人精品观看视频在线观看| 国产一区二区三区亚洲精品| 国产成人精品午夜福利免费APP| 国产欧美日韩在线一区| 精品人妻伦九区久久aaa片69| 午夜福利高清在线观看| 中文字幕久久精品无码综合网| 国产对白俱乐部交换在线播放| 亚洲AV无码AV在线影院| 先锋成人资源| 天天日天天色|