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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据分析必备:掌握这个R语言基础包1%的功能,你就很牛了

發布時間:2025/3/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据分析必备:掌握这个R语言基础包1%的功能,你就很牛了 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀:無論數據分析的目的是什么,將數據導入R中的過程都是不可或缺的。畢竟巧婦難為無米之炊。

utils包是R語言的基礎包之一。這個包最重要的任務其實并不是進行數據導入,而是為編程和開發R包提供非常實用的工具函數。使用utils包來進行數據導入和初步的數據探索也許僅僅只是利用了utils包不到1%的功能,但這1%卻足以讓你在學習R語言時事半功倍。

作者:劉健 鄔書豪

如需轉載請聯系大數據(ID:hzdashuju)

01 read.csv/csv2:逗號分隔數據讀取

.csv可能是目前最常見的平面文件類型了。它代表的是comma-separated values,簡單來講就是,文件里每一個單獨的數據值都是用逗號進行分隔的。

.csv只是text file(文本文件)的一種,文本文件在微軟的Windows操作系統中常以拓展名為.txt的形式呈現。文本文件可以使用各種符號來分隔數據值,例如常見的tab和“;”(分號),或者其他任意符號。即便是以.csv為拓展名的文件也并非一定是以逗號進行分隔的,相關內容在后文的函數演示部分會有介紹。

文件的拓展名并非必須,熟悉Linux系統的讀者可能接觸過很多無拓展名的文件。處理無拓展名的文本文件數據時,最簡單的辦法就是使用data.table包中的fread函數。

utils里的read.csv/csv2是專門用于設置快速讀取逗號分隔(read.csv)或是分號分隔(read.csv2)。也就是說,在事先了解數據值分隔符號的情況下,這兩個函數對分隔符和其他一些參數的默認設置會使數據導入的部分更加簡單和快捷。

有一點需要特別注意,即這兩個函數對小數點的處理:前者默認的小數點是“.”,后者默認的小數點是“,”。這只是因為不同國家技術人員對數據值分隔符的見解或者好惡不同而造成的。

萬里長征第一步,我們先來看read.csv最簡單的使用方式,代碼如下:

>?flights?<-?read.csv(file?=?"flights.csv")

此行代碼可以解讀為使用read.csv從工作空間讀取文件flights.csv,然后將數據集保存到flights中,其他所有參數都使用默認值。因為flights.csv文件已經在R的工作路徑里,所以此處免去了設置work directory。

這里希望讀者能夠自行探索使用.rproj(R項目—將每一次數據分析的過程都看作一個獨立的項目)來對每一個獨立的數據分析工作進行分類和歸集。該方法不僅免去了設置路徑的麻煩,也減少了因原始數據文件太多而可能導致的各種隱患。

小知識:函數在執行的時候可以依照其默認設置的參數位置來執行,也就是說,用戶無須指定每一個參數的名稱,只需按照位置順序來設定參數值即可。比如,read.csv中的file參數名就可以省略,只要第一位是讀取文檔的目標路徑和文件名就可以。

數據文件被讀取到R工作環境中的第一步通常為調用str函數來對該數據對象進行初步檢視,下面的代碼列出了該函數最簡單的使用方式。

????>?str(object?=?flights)'data.frame':???6?obs.?of??6?variables: $?carrier?:?Factor?w/?4?levels?"AA","B6","DL",..:?4?4?1?2?3?4 $?flight??:?int??1545?1714?1141?725?461?1696 $?tailnum?:?Factor?w/?6?levels?"N14228","N24211",..:?1?2?4?6?5?3 $?origin??:?Factor?w/?3?levels?"EWR","JFK","LGA":?1?3?2?2?3?1 $?dest????:?Factor?w/?5?levels?"ATL","BQN","IAH",..:?3?3?4?2?1?5 $?air_time:?int??227?227?160?183?116?150

str函數可用于檢視讀取數據結構、變量名稱等。這里同樣也只指定了一個非默認參數,其他參數全部都為默認值。str的輸出結果由5個主要部分組成,具體說明如下。

  • data.frame代表數據集在R中的呈現格式,這里指的是數據框格式,讀者可以將其設想為常見的Excel格式。

  • 6 obs. of 6 variables代表這個數據集有6個變量,每個變量分別有6個觀測值。

  • $ carrier與其余帶有“$”符號的函數均指變量名稱。

  • 變量名稱冒號后面的Factor和int代表的是變量類型。這里分別是指因子型Factor和整數型int數據。另外還有字符型chr、邏輯型logi、浮點型dbl(帶有小數點的數字)、復雜型complex等。因子型變量的后面還列出了各個變量的因子水平,也就是擁有多少個不同的因子。比如,出發地origin后的3 levels就是表示其有3個因子水平。只是出發地是否屬于因子類型的數據還有待商榷,而read.csv默認將所有的字符型數據都讀成了因子型。

  • 數據中的實際觀測值。str函數在默認情況下會顯示10行數據。使用str函數瀏覽導入的數據集可以讓用戶確定讀取的數據是否正確、數據中是否有默認的部分、變量的種類等信息,進而確定下一步進行數據處理的方向。其他用來檢視數據集的函數還有head、tail、view等,另外,Rstudio中的Environment部分也可以用于查看目前工作環境中的數據框或其他類型的數據集。

  • 前文提到過,.csv并非一定是以逗號進行分隔。如果遇到以非逗號分隔數據值的情況,加之未指定分隔符(例如,運行read.csv讀取以Tab分隔的文件),就會出現下面的情況:

    ????>?flights1?<-?read.csv(file?=?"flights1.csv")>?str(object?=?flights1)?'data.frame':???6?obs.?of??1?variable: $?carrier.flight.tailnum.origin.dest.air_time:?Factor?w/?6?levels?"AA\t1141\tN619AA\tJFK\tMIA\t160",..:?4?6?1?2?3?5

    小技巧:指定(assgin)符號“<-”的快捷鍵是“alt”加“-”(短劃線)。Rstudio快捷鍵參照表可以通過“alt+K”來查看詳細內容。

    由代碼可知,read.csv函數將所有數據都讀取到了一列中。因為按照默認的參數設置,函數會尋找逗號作為分隔列的標準,若找不到逗號,則只好將所有變量都放在一列中。指定分隔符參數可以解決這個問題。將\t(tab在R中的表達方式)指定給sep參數后再次運行read.csv讀取以Tab分隔的csv文件,代碼如下:

    ????&gt;?flights3?&lt;-?read.csv(file?=?"flights1.csv",?sep?=?"\t")&gt;?str(flights3)?'data.frame':???6?obs.?of??6?variables: $?carrier?:?Factor?w/?4?levels?"AA","B6","DL",..:?4?4?1?2?3?4 $?flight??:?int??1545?1714?1141?725?461?1696 $?tailnum?:?Factor?w/?6?levels?"N14228","N24211",..:?1?2?4?6?5?3 $?origin??:?Factor?w/?3?levels?"EWR","JFK","LGA":?1?3?2?2?3?1 $?dest????:?Factor?w/?5?levels?"ATL","BQN","IAH",..:?3?3?4?2?1?5 $?air_time:?int??227?227?160?183?116?150

    根據實際情況不同,字符型數據有時會是因子,有時不會。如果使用read.csv默認的讀取方式,那么字符型全因子化會對后續的處理分析帶來很多麻煩。所以最好是將字符因子化關掉。stringsAsFactors參數就是這個開關,示例代碼如下:

    ????&gt;?flights_str?&lt;-?read.csv(file?=?"flightsstrings.csv",?sep?=?"\t",?stringsAsFactors?=?FALSE)&gt;?str(object?=?flights_str)'data.frame':???6?obs.?of??6?variables: $?carrier?:?chr??"UA"?"UA"?"AA"?"B6"?... $?flight??:?int??1545?1714?1141?725?461?1696 $?tailnum?:?chr??"N14228"?"N24211"?"N619AA"?"N804JB"?... $?origin??:?chr??"EWR"?"LGA"?"JFK"?"JFK"?... $?dest????:?chr??"IAH"?"IAH"?"MIA"?"BQN"?... $?air_time:?int??227?227?160?183?116?150

    02 read.delim/delim2:特定分隔符數據讀取

    read.delim/delim2這兩個函數是專門用來處理以tab分隔數據的文件的,delim可用來讀取小數點是“.”的數據,delim2則用來處理小數點是“,”的數據,所以這兩個函數與read.csv/csv2唯一不同的就只是參數sep = "\t"。

    聰明的你很可能已經想到了如果使用這兩個函數的默認設置來讀取以逗號分隔的數據會發生什么。函數的默認參數會在原始數據中不斷地尋找tab分隔符,找不到的話就會如同前文演示的那樣,將所有變量都擠在一列里。read.delim/delim2的示例代碼如下:

    ????&gt;?read.delimfunction?(file,?header?=?TRUE,?sep?=?"\t",?quote?=?"\"",?dec?=?".",?fill?=?TRUE,?comment.char?=?"",?...)? read.table(file?=?file,?header?=?header,?sep?=?sep,?quote?=?quote,?dec?=?dec,?fill?=?fill,?comment.char?=?comment.char,?...) &lt;bytecode:?0x000000001a28a710&gt; &lt;environment:?namespace:utils&gt;

    無論是read.csv還是read.delim,幫助文檔中的參數格式都是相同的。從上面的代碼結果中可以看出,read.delim執行的其實,是函數read.table。

    其實,這4個函數(read.csv/read.csv2/read.delim/read.delim2)都只是它們的母函數read.table的變形罷了。這樣做的原因有可能是因為在RStudio出生之前,read.csv/delim比read.table更容易記住,也有可能只是Henrik Bengtsson(utils包的筆者)覺得這樣做很酷。具體是什么原因已經不再重要,會用這些函數才是第一要務。

    03 read.table:任意分隔符數據讀取

    read.table函數會將文件讀成數據框的格式,將分隔符作為區分變量的依據,把不同的變量放置在不同的列中,每一行的數據都會對應相應的變量名稱進行排放。以下簡要列出了read.table函數中主要參數的中英文對照。

    函數read.table實用參數及功能對照:

    • file:數據文件路徑+文件名,也可以是一個url,或者是文字數據?

    • header:設置邏輯值來指定函數是否將數據文件的第一列作為列名。默認為假

    • sep:不同變量之間的分隔符,特指分隔列數據的分隔符。默認值為空,可以是“,”、“\t”等

    • quote:單雙引號規則的設置。如果不希望設置該參數,則需要指定其為空:quote = ""

    • dec:用作小數點的符號,一般為句點或者逗號

    • row.names:行名。可以通過指定一組向量來進行設置。如果文件中的第一行比數據整體的列數量少一時,則會默認使用第一列來作為行名

    • col.names:列名。可以通過指定一組向量來進行列名設置

    • na.strings:對默認值的處理

    • colClasses:變量類型的設置。通過指定一組向量來指定每列的變量數據類型,具體使用方式為:colClasses ?= c ("character","numeric",…)

    • fill:設置邏輯值來處理空白值部分,使用方法請參見代碼演示部分

    • strip.white:設置邏輯值來處理空白列。某些數據文件內可能會預留一些變量列,但數據采集后這些預留的列并未被填滿,而是仍然保留著制表符,該參數就是用來處理掉這些意義不大的制表符

    • blank.lines.skip:空白行是否跳過,默認為真,即跳過

    • stringsAsFactors:字符串是否作為因子,推薦設置為否

    • skip :跳過幾行讀取原始數據文件,默認設置為0,表示不跳過任何一行,從文件第一行開始讀取,可以傳參任意數字

    以上這些參數已足以應付讀取日常練習所用的規整的數據文件,例如,教授布置的統計作業中的原始數據集,各種傳感器輸出的.csv文件等。下面的代碼及運行結果演示非常簡單,使用read.table讀取上一節中的第一個數據集,實現思路是每次只增加一個read.table函數中的參數。代碼如下:

    &gt;?flights?&lt;-?read.table(file?=?"flights.csv") &gt;?head(x?=?flights)

    表1-2展示了所有參數均為默認設置的部分結果。

    • 表1-2 read.table函數參數設置結果展示①

    小提示:上面的演示代碼中使用了head函數,該函數可以按照人們習慣的方式將數據框按照自上而下的方式顯示出來,而不是像str函數那樣從左向右展示。一般在做初步數據檢視的時候,推薦兩個函數都運行,作為互補。head方便與原始數據文檔進行比對,而str則可以顯示所保存的數據框屬性、變量類型等信息。

    因為函數默認的分隔符是空白(注意不是空格),所以應有的6個變量都被讀在一列中。且默認的header參數是假,所以數據變量被默認分配了一個新的變量名V1,并且應為變量名稱的這一行變成了觀測值的第一行。將header設置為TRUE后的代碼如下:

    &gt;?flights?&lt;-?read.table(file?=?"flights.csv",header?=?TRUE) &gt;?head(x?=?flights)

    表1-3中顯示的是部分結果。

    • 表1-3 read.table函數參數設置結果展示②

    指定header參數為真,分隔符sep參數為“,”后,變量名稱才得以讀取成應有的樣子(如表1-4所示)。

    &gt;?flights?&lt;-?read.table(file?=?"flights.csv",header?=?TRUE,sep?=?",") &gt;?head(flights)

    • 表1-4 read.table函數參數設置結果展示③

    表1-4所示的數據框終于呈現了該有的樣子。需要注意的,是因為字符數據因子化的參數還是默認設置,因此變量carrier、tailnum、origin、dest還是因子型。在實際練習或使用時,建議指定stringAsFactors = FALSE。

    以上讀取的數據集都是規整的數據集,即每一行數據都有相同的觀測值。不過在實際生活中,原始數據難免會存在空白行、空白值、默認值,或者某一行數據存在多余觀測值卻沒有與之對應的變量名稱,抑或元數據和原始數據在同一個文件中等各種問題。

    這里暫且稱這些問題數據集為不規則數據集,簡單說就是,實際列的個數多于列名的個數。read.table函數為這些問題準備了相應的參數。

    1. 空白行

    前文介紹過read.table對于空白行的默認處理是跳過,這可以滿足大部分常見數據的情況。不過在某些特殊情況下,例如,一個數據文件中同時存在兩個或兩個以上的數據集,那么保留空白行可能會有助于后續的數據處理。

    表1-5演示的就是一個比較特殊的例子。空白行的上部是元數據,也即解釋數據的數據,這里演示的是航空公司的縮寫和全名的對照。空白行的下部是數據的主體部分,航班號、起始地縮寫、起飛時間。這里保留空白行可有助于區分數據的不同部分。

    • 表1-5 特殊類型文本數據文檔

    保留空白行的代碼如下所示:

    &gt;?airlines?&lt;-?read.table(file?=?"airlines.csv",?header?=?TRUE,?sep?=?"\t",?blank.lines.skip?=?FALSE,?stringsAsFactors?=?FALSE) &gt;?head(airlines,?n?=?8)

    指定空白行保留的參數后,數據被成功讀進R(表1-6)。

    • 表1-6 read.table函數參數設置結果展示④

    如此一來,不同的數據集就可以很容易地進行切割并歸集到新的數據集中。可是,另外一個問題又出現了,函數按照第一部分的兩列變量將后續的所有數據也都寫入了兩列。

    這是因為read.table會掃描文件中前五行的數據(包括變量名稱)并以此為標準來確定變量數,airlines.csv中開始的五行數據都只有兩列,所以后續的數據也都強制讀取成兩列。

    如果數據的第2~5行中存在任何一行擁有多于前面一行或幾行的數據值,那么函數就會報錯提示第一行沒有相應數量的值。這種情況可以根據實際數據文件內容,用兩種方式來處理,具體如下。

  • 如果文件中開始的部分是暫時不需要的元數據,那么可以使用skip函數跳過相應的行數,只讀取感興趣的數據。

  • 如果文件內容是一個整體,只是若干行數據具有額外的觀測值。那么可以通過調整參數col.names或fill和header進行處理。

  • 第一種情況比較容易,讀者可以自行測試,在此略過。第二種情況需要知道數據中觀測值個數的最大值,以用來補齊變量個數。因為已經知道airlines文件的第二部分擁有6個變量,所以下面就來演示如何將6個變量名稱指定成新的變量名(表1-7),代碼如下:

    &gt;?airlines?&lt;-?read.table(file?=?"airlines.csv",?header?=?FALSE,?sep?=?"\t",?stringsAsFactors?=?FALSE,?col.names?=?paste0("V",1:6),?blank.lines.skip?=?FALSE) &gt;?head(airlines)

    演示結果如表1-7所示。

    • 表1-7 read.table函數參數設置結果展示⑤

    小技巧:另外一個獲取不規則數據集中所需變量個數的方法是利用報錯信息。當不指定col.names參數,且原始數據的第2~5行中任一行有多于第一行的數據時,read.table會報錯提示Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, : line 1 did not have X elements, X即所需要的手動指定的變量個數。

    這里使用paste0來創建新的變量名稱。paste0可以理解為膠水函數,用于將需要的字符串粘合在一起。這里演示的意思是創建6個以V開頭,從V1到V6的字符串作為變量名。這種處理方式足以應付平時練習用的小型數據集(比如,只有幾行到幾十行數據的數據集)。

    但是在處理實際工作中成百上千行的數據時,這種手動指定變量個數的方法就顯得笨拙而低效了。下面的代碼演示了如何實現自動檢測數據集所需的變量數:

    &gt;?number_of_col?&lt;-?max(count.fields("airlines.csv",sep?=?"\t")) &gt;?airlines?&lt;-?read.table(file?=?"airlines.csv",?header?=?FALSE,?sep?=?"\t",?stringsAsFactors?=?FALSE,?col.names?=?paste0("V",seq_len(number_of_col)),?blank.lines.skip?=?FALSE) &gt;?head(airlines)

    部分結果展示如表1-8所示。

    • 表1-8 read.table函數參數設置結果展示⑥

    count.fields/max/seq_len這三個函數的配合使用實現了如下功能。

    count.fields用于自動檢測數據集中每一行數據的觀測值個數,max用于找出count.fields輸入結果中的最大值,seq_len用于以最大值為參照生成1到最大值的整數序列,膠水函數paste0用于定義變量名稱。

    因為R基于向量計算的特性,因此這種函數之間簡單的配合使用很常見也很有效。所以希望小伙伴們在以后的練習或實際工作中,多思考,盡量使用這樣的組合來提高代碼的效率、簡潔性和可重復性。

    使用參數fill和header也可以讀取不規則數據集。需要注意的是,采用這種方法是有前提條件的,即原始數據第2~5行實際列的個數應大于列名。代碼如下:

    &gt;?flights_uneven?&lt;-?read.table("airlines.csv",?header?=?FALSE,?sep?=?"\t",?stringsAsFactors?=?FALSE,?fill?=?TRUE) &gt;?head(flights_uneven)

    上述代碼的演示結果如表1-9所示。

    • 表1-9 read.table函數參數設置結果展示⑦

    2. 默認值、空白

    一個數據集里出現默認值(NA)或空白(“”)的情況十分常見,兩者之間的區別需要根據不同的實際情況來確定。理論上來講,默認值仍是數據觀測值的一種,雖然在原始數據中其可能與空白一樣沒有顯示,但是它可以通過其他手段來進行補齊。

    而空白有可能并不是數據,比如在上面的演示中,V3至V6列,1~5行都是空白,這些空白不屬于任何實際數據變量,是真正的空白,因而不能說這些空白是默認值。

    默認值和空白的處理完全可以獨立成書,因為相關內容已經超出了本文的范圍,所以這里不再過多討論。下面只演示在導入數據的過程中,如何進行簡單的默認值、空白預處理,代碼如下:

    &gt;?flights_uneven?&lt;-?read.table(file?=?"flights_uneven.csv",?header?=?FALSE,?sep?=?"\t",?stringsAsFactors?=?FALSE,?fill?=?TRUE,?na.strings?=?c("")) &gt;?head(flights_uneven)

    表1-10中展示了處理后的部分數據值。

    • 表1-10 read.table函數參數設置結果展示⑧

    第七列中的數據在指定將空白替換成“NA”之后,原有的空白位置被寫入了“NA”,也就是說第七列的空白屬于數據的一部分。根據實際情況,也可以將多余的數據部分或全部替換成“NA”(如表1-11所示),以方便后續的處理及分析,代碼如下:

    &gt;?flights_uneven?&lt;-?read.table("flights_uneven.csv",sep?=?"\t",?stringsAsFactors?=?FALSE,?fill?=?TRUE,header?=?FALSE,?na.strings?=?c(paste0("測試",1:3),"")) &gt;?head(flights_uneven)

    替換結果如表1-11所示。

    • 表1-11 read.table函數參數設置結果展示⑨

    當數據集行數較多,無法輕易地鑒別出某一列到底有多少個觀測值需要賦值為“NA”的時候,可以配合unique函數進行處理。處理的思路是先將數據讀取到R中,然后使用unique函數找到指定列中的非重復觀測值,選取指定觀測值并保存到一個向量內,然后將向量指定給na.strings參數來進行替換,代碼如下:

    ????&gt;?flights_uneven?&lt;-?read.table("flights_uneven.csv",sep?=?"\t",?string-sAsFactors?=?FALSE,?fill?=?TRUE,?header?=?FALSE)&gt;?replace?&lt;-?unique(flights_uneven$V7) replace[1]?""??????"測試1"?"測試2"?"測試3"&gt;?flights_uneven?&lt;-?read.table("flights_uneven.csv",sep?=?"\t",?stringsAsFactors?=?FALSE,?fill?=?TRUE,header?=?FALSE,?na.strings?=?c(replace[c(1,3)]))&gt;?head(flights_uneven)

    替換結果如表1-12所示。

    • 表1-12 read.table函數參數設置結果展示⑩

    第一次讀取數據是為了獲得需要替換的觀測值,第二次讀取則是將需要替換成“NA”的觀測值指定給相應參數。因為replace是一個字符串向量,所以可以使用“[”按位置選擇其中的值,當然也可以不選擇任何值,直接全部替換。

    小知識:“[”是baseR中Extract的一種,在R的使用過程中,這是必須掌握和理解的函數之一。

    關于作者:劉健,資深R語言技術專家,數據科學工程師。在新西蘭皇家植物與食品研究院工作,參與一項國際和兩項國家的級別研究項目,使用R語言開發完成氣象數據自動提取和模型文件自動化工具。獨立開發完成R語言程序包一個。

    鄔書豪,資深R語言用戶和數據分析工程師,是數據科學領域10萬粉絲的知名公眾號人工智能愛好者社區的負責人,公眾號文章閱讀量破百萬。喜歡用SQL、R和Python解決工作中的數據科學問題,致力于成為一名有深度行業實踐經驗積累的數據科學家。

    本文摘編自《R數據科學實戰:工具詳解與案例分析》,經出版方授權發布。

    延伸閱讀《R數據科學實戰:工具詳解與案例分析》

    點擊上圖了解及購買

    轉載請聯系微信:DoctorData

    推薦語:這是一部能指導零基礎的讀者快速掌握R語言并利用R語言進入數據科學領域的著作。兩位作者在R語言和數據科學領域有豐富的實踐經驗,首先是非常有針對性地講解了利用R語言進行數據處理需要掌握和使用的6大類17種工具,然后是結合這些工具的使用給出了5個典型的綜合性案例,幫助讀者迅速將理論與實踐融會貫通。

    開學季滿減福利進行中

    長按小程序碼發現更多好書

    「大數據」內容合伙人之「鑒書小分隊」上線啦!

    最近,你都在讀什么書?有哪些心得體會想要跟大家分享?

    數據叔最近搞了個大事——聯合優質圖書出版商機械工業出版社華章公司發起鑒書活動。

    簡單說就是:你可以免費讀新書,你可以免費讀新書的同時,順手碼一篇讀書筆記就行。詳情請在大數據公眾號后臺對話框回復合伙人查看。

    有話要說?

    Q:?你用過哪些R語言包?

    歡迎留言與大家分享

    猜你想看?

    • 包教包會,7段代碼帶你玩轉Python條件語句

    • 學霸們在假期里“偷著學”,看的是這些書

    • 從圖靈機、圖靈測試到人工智能:什么決定了AI能否取代人類?

    • 從概念到應用,終于有人把數據挖掘講明白了

    更多精彩?

    在公眾號對話框輸入以下關鍵詞

    查看更多優質內容!

    PPT?|?報告?|?讀書?|?書單?|?干貨?

    大數據?|?揭秘?|?Python?|?可視化

    AI?|?人工智能?|?5G?|?區塊鏈

    機器學習?|?深度學習?|?神經網絡

    合伙人?|?1024?|?段子?|?數學?|?高考

    據統計,99%的大咖都完成了這個神操作

    ?

    覺得不錯,請把這篇文章分享給你的朋友

    轉載 / 投稿請聯系:baiyu@hzbook.com

    更多精彩,請在后臺點擊“歷史文章”查看

    點擊閱讀原文,了解更多

    總結

    以上是生活随笔為你收集整理的数据分析必备:掌握这个R语言基础包1%的功能,你就很牛了的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。