色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

數據科學家常犯的10個編程錯誤

電子工程師 ? 來源:fqj ? 2019-05-24 14:50 ? 次閱讀

數據科學家是“比軟件工程師更擅長統計學,比統計學家更擅長軟件工程的人”。許多數據科學家都具有統計學背景,但是在軟件工程方面的經驗甚少。我是一名資深數據科學家,在Stackoverflow的python編程方面排名前1%,并與許多(初級)數據科學家共事。以下是我經常看到的10大常見錯誤,本文將為你相關解決方案:

不共享代碼中引用的數據

對無法訪問的路徑進行硬編碼

將代碼與數據混合

在Git中和源碼一起提交數據

編寫函數而不是DAG

寫for循環

不編寫單元測試

不寫代碼說明文檔

將數據保存為csv或pickle文件

使用jupyter notebook

1.不共享代碼中引用的數據

數據科學需要代碼和數據。因此,為了讓別人可以復現你的結果,他們需要能夠訪問到數據。道理很簡單,但是很多人忘記分享他們代碼中的數據。

importpandasaspddf1=pd.read_csv('file-i-dont-have.csv')#failsdo_stuff(df)

解決方案:使用d6tpipe來共享你的代碼中的數據文件、將其上傳到S3/web/google驅動等,或者保存到數據庫,以便于別人可以檢索到文件(但是不要將其添加到git,原因見下文)。

2.對無法訪問的路徑進行硬編碼

與錯誤1相似,如果你對別人無法訪問的路徑進行硬編碼,他們將無法運行你的代碼,并且必須仔細查看代碼來手動更改路徑。令人崩潰!

importpandasaspddf=pd.read_csv('/path/i-dont/have/data.csv')#failsdo_stuff(df)#orimportosos.chdir('c:\Users\yourname\desktop\python') # fails

解決方案:使用相對路徑、全局路徑配置變量或d6tpipe,使你的數據易于訪問。

3.將代碼與數據混合

既然數據科學的代碼中包含數據,為什么不把它們放到同一目錄中?那樣你還可以在其中保存圖像、報告和其他垃圾。哎呀,真是一團糟!

├──data.csv├──ingest.py├──other-data.csv├──output.png├──report.html└── run.py

解決方案:將你的目錄進行分類,比如數據、報告、代碼等。請參閱Cookiecutter Data Science或d6tflow項目模板[見#5],并使用#1中提到的工具來存儲和共享數據。

4.在Git中和源碼一起提交數據

現在,大多數人對他們的代碼使用版本控制(如果你不使用,那就是另外一個錯誤,請參閱git:https://git-scm.com/)。在嘗試共享數據時,很容易將數據文件添加到版本控制中。當文件很小時是可以的,但是git并沒有針對數據進行優化,尤其是大文件。

gitadddata.csv

解決方案:使用第1點中提到的工具來存儲和共享數據。如果你真的希望對數據進行版本控制,請參閱d6tpipe,DVC和Git大文件存儲。

5.編寫函數而不是DAG

關于數據部分已經夠多了,現在來談一談實際的代碼!在學習編程時最先學習的內容之一就是函數,數據科學代碼通常由一系列線性運行的函數組成。

這會導致一些問題,請參閱“為什么你的機器學習代碼可能不好的4個原因”:

defprocess_data(data,parameter):data=do_stuff(data)data.to_pickle('data.pkl')data = pd.read_csv('data.csv')process_data(data)df_train=pd.read_pickle(df_train)model=sklearn.svm.SVC()model.fit(df_train.iloc[:,:-1],df_train['y'])

解決方案:數據科學代碼不是一系列線性連接的函數,而是一組具有依賴關系的任務集合。

6.寫for循環

與函數類似,for循環也是你學習編程時最初學習的內容。它們易于理解,但是運行緩慢且過于冗長,通常意味著你不了解矢量化的替代方案。

x = range(10)avg=sum(x)/len(x);std=math.sqrt(sum((i-avg)**2foriinx)/len(x));zscore=[(i-avg)/stdforx]#shouldbe:scipy.stats.zscore(x)# orgroupavg=[]foriindf['g'].unique():dfg=df[df[g']==i]groupavg.append(dfg['g'].mean())#shouldbe:df.groupby('g').mean()

解決方案:Numpy,scipy和pandas為你需要for循環的情況提供了矢量化函數。

7.不編寫單元測試

隨著數據、參數或用戶輸入的改變,你的代碼可能會出現問題,有時你并沒有注意到。這可能會導致糟糕的輸出結果,而如果有人基于你的輸出做出決策,那么糟糕的數據將會導致糟糕的決策。

解決方案:使用assert語句來檢查數據質量。pandas有相等測試,d6tstack有數據提取檢查以及用于數據連接的d6tjoin。

以下是數據檢查的示例代碼:

assert df['id'].unique().shape[0] == len(ids) # have data for all ids?assertdf.isna().sum()<0.9?#?catch?missing?valuesassert?df.groupby(['g','date']).size().max()?==1?#?no?duplicate?values/date?assert?d6tjoin.utils.PreJoin([df1,df2],['id','date']).is_all_matched()?#?all?ids?matched?

8.不寫代碼說明文檔

我明白,你急著做出一些分析結果。你把事情匯總到一起分析,將結果交給你的客戶或老板。一個星期之后,他們回來說,“可以把XXX改一下嗎”或者“可以更新一下這里嗎”。你看著你的代碼,但是并不記得你當初為什么這么寫。現在就像是在運行別人的代碼。

defsome_complicated_function(data):data=data[data['column']!='wrong']data=data.groupby('date').apply(lambdax:complicated_stuff(x))data=data[data['value']<0.9] return data

解決方案:即使在你已經提交分析報告后,也要花費額外的時間,來對你做的事情編寫說明文檔。以后你會感謝自己,別人更會感謝你。那樣顯得你很專業!

9.將數據保存為csv或pickle文件

回到數據,畢竟是在講數據科學。就像函數和for循環一樣,CSV和pickle文件很常用,但是并不好用。CSV文件不包含綱要(schema),因此每個人都必須再次解析數字和日期。Pickle文件解決了這個問題,但是它只能在python中使用,并且不能壓縮。兩者都不是存儲大型數據集的最優格式。

defprocess_data(data,parameter):data=do_stuff(data)data.to_pickle('data.pkl')data=pd.read_csv('data.csv')process_data(data)df_train = pd.read_pickle(df_train)

解決方案:使用parquet或其他帶有數據綱要的二進制數據格式,在理想情況下可以壓縮數據。d6tflow將任務的數據輸出保存為parquet,無需額外處理。

10.使用jupyter notebook

最后一個是頗有爭議的錯誤:jupyter notebook和csv文件一樣普遍。許多人使用它們,但是這并不意味著它們很好。jupyter notebook助長了上述提到的許多不良編程習慣,尤其是:

把所有文件保存在一個目錄中

編寫從上至下運行的代碼,而不是DAG

沒有對代碼進行模塊化

很難調試

代碼和輸出混在一個文件中

沒有很好的版本控制

它容易上手,但是擴展性很差。

解決方案:使用pycharm和/或spyder。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編程
    +關注

    關注

    88

    文章

    3637

    瀏覽量

    93905
  • 函數
    +關注

    關注

    3

    文章

    4345

    瀏覽量

    62868

原文標題:數據科學家常犯的 10 個編程錯誤

文章出處:【微信號:DBDevs,微信公眾號:數據分析與開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    關于C語言編程常犯錯誤匯總

    17C語言新手編程常犯錯誤及解決方式
    的頭像 發表于 06-26 09:19 ?6170次閱讀
    關于C語言<b class='flag-5'>編程</b>時<b class='flag-5'>常犯</b>的<b class='flag-5'>錯誤</b>匯總

    TI科學家談浮點DSP未來發展

    TI科學家談浮點DSP未來發展 自十多年前浮點數字信號處理器(DSP)誕生以來,便為實時信號處理提供了算術上更為先進的備選方案。不過,定點器件至今仍是業界的主流--當然低成本是主要原因。定點DSP每
    發表于 11-03 15:18

    科學家推出多種波動描記傳感器

      美國得克薩斯大學的科學家們最新一項研究結果表明,人們很快將根據腸子的波動情況當場揭穿騙子的謊言。  該大學的科研小組還認為,將來有一天,以記錄心臟活動為主的多種波動描記器將極大地提高其工作質量
    發表于 10-24 11:40

    生物電磁波揭密 場導發現(俄羅斯華裔科學家寫的腦控技術叢書)

    生物電磁波揭密場導發現(俄羅斯華裔科學家寫的腦控技術叢書)
    發表于 03-05 09:31

    通往數據科學家的崎嶇道路

    如果你曾經查看過數據科學家的崗位要求,你就知道它的職責范圍有多廣。有的數據科學家致力于自然語言處理、計算機視覺、深度學習,有的則從事A/B測試、產品分析。確定哪些工作適合自己,哪些不適
    的頭像 發表于 07-26 09:17 ?2600次閱讀

    哪些才是對數據科學家最迫切的技能呢?

    AngelList提供的是列出數據科學家崗位的公司數而不是崗位數。我把AngelList從所有分析里面排除掉了,因為其搜索算法似乎按照OR型的邏輯搜索進行,沒有辦法改成AND。如果你尋找的是“數據
    的頭像 發表于 11-19 18:14 ?3084次閱讀

    什么是數據科學家?需要認證嗎?

    得以清晰化。”Fleming指出,IBM目前雇傭了大約1.5萬名被定義為數據科學家的技術人員,預計數據科學家人數的增長速度超過其雇員總數的增長速度。
    的頭像 發表于 02-14 09:41 ?6648次閱讀

    數據科學家與機器學習工程師怎么區分

    十年來,我們一直在談論數據科學數據科學家。雖然在怎么才叫“數據科學家”的問題上始終存在著爭議,
    的頭像 發表于 05-18 11:24 ?3259次閱讀

    數據科學家數據工程師的區別

    數據科學家和數據工程師的主要區別,可以用ETL和DAD的區別來解釋。
    的頭像 發表于 07-10 17:06 ?2673次閱讀

    企業如何解決數據科學家短缺詳細方法什么

     隨著企業以數據為中心的文化,以做出決策和規劃,數據科學家對全球企業的重要性日益增加。但是企業無法足夠快地聘請數據科學家,因為合格候選人仍然
    的頭像 發表于 04-18 10:31 ?3491次閱讀

    采訪資深數據科學家:成為數據科學家應具有的品質

    作為一門逐漸成熟的新興領域,與數據科學相關的很多領域開始變得備受青睞,比如數據工程,數據分析以及機器學習和深度學習。數據
    的頭像 發表于 06-30 11:28 ?2351次閱讀

    什么是數據科學家的最佳編程語言?

    每個數據科學學習者都最常問的問題:“ 什么是數據科學家的最佳編程語言?”。
    的頭像 發表于 07-05 11:32 ?2535次閱讀

    數據科學家和數據工程師能合二為一嗎?

    雖然數據科學家和數據工程師的角色似乎截然不同,但數據科學家和數據工程師有許多共同的特點和共技能。這些重疊的技能包括處理和操作大數據集、應用
    的頭像 發表于 07-25 10:17 ?2569次閱讀

    面向工程師和科學家的大數據

      為了有效地利用大數據的優勢,工程師和科學家需要一可擴展的工具,例如 MATLAB,以提供對用于存儲和管理數據的各種系統和格式的訪問。
    的頭像 發表于 10-06 07:52 ?677次閱讀

    中國聯通AI科學家廉士國入選全球前2%頂尖科學家榜單

    %頂尖科學家榜單是Elsevier和斯坦福大學John P.A. Ioannidis教授團隊合作的具有全球影響力的項目成果,為全球學術界提供了一面向科學家長期科研表現的衡量指標,旨在更客觀、更真實地反映
    的頭像 發表于 11-07 16:18 ?2721次閱讀
    主站蜘蛛池模板: 999久久久国产精品蜜臀AV | 亚洲午夜一区二区电影院 | 亚洲激情网站 | 99pao成人国产永久免费视频 | 无码不卡中文字幕在线观看 | 精品午夜久久影视 | 国产小视频免费在线观看 | 美女诱惑性感揉胸 | 美女脱光app | 亚洲 小说 欧美 激情 另类 | 色偷偷网址| 亚洲AV无码一区二区三区乱子伦 | 精品夜夜澡人妻无码AV蜜桃 | 日本粉嫩学生毛绒绒 | 午夜看片福利在线观看 | 秋霞最新高清无码鲁丝片 | 免费观看成人毛片 | 成人短片迅雷下载 | 久久re热在线视频精99 | 四虎国产精品永久一区高清 | 亚洲看片网站 | a国产成人免费视频 | 一个人免费观看HD完整版 | 影音先锋xfplay影院av | 青草久久久 | 国产99精品视频一区二区三区 | 亚洲精品视频免费 | 老师的玉足高跟鞋满足我 | 最新国自产拍天天更新 | 亚洲黄色网页 | 国产美女又黄又爽又色视频网站 | 欧美日韩精品久久久免费观看 | 国产69TV精品久久久久99 | 亚洲 日韩 国产 制服 在线 | 综合激情区视频一区视频二区 | 俄罗斯美幼 | 女朋友的妈妈在线观看 | 久久久视频2019午夜福利 | se01国产短视频在线观看 | 亚洲国产精品无码中文在线 | 欧美精品久久久久性色AV苍井 |