大資料分析 - 資料收集



資料收集在大資料週期中扮演著最重要的角色。網際網路為各種主題提供了幾乎無限的資料來源。該領域的重要性取決於業務型別,但傳統行業可以獲取各種外部資料來源,並將這些資料與他們的交易資料相結合。

例如,假設我們要構建一個推薦餐廳的系統。第一步是收集資料,在這種情況下,是從不同的網站收集餐廳評論並將它們儲存在資料庫中。由於我們對原始文字感興趣,並將使用它進行分析,因此資料用於開發模型的儲存位置並不那麼重要。這可能與大資料主要技術相矛盾,但為了實現大資料應用,我們只需要使其即時執行。

Twitter迷你專案

一旦問題被定義,下一步就是收集資料。以下迷你專案的想法是在收集網路資料並將其構建為機器學習模型中使用的結構方面進行工作。我們將使用R程式語言從Twitter REST API收集一些推文。

首先建立一個Twitter帳戶,然後按照twitteRvignette中的說明建立一個Twitter開發者帳戶。這是這些說明的總結:

  • 訪問https://twitter.com/apps/new並登入。

  • 填寫基本資訊後,轉到“設定”選項卡,然後選擇“讀取、寫入和訪問直接訊息”。

  • 確保在執行此操作後單擊“儲存”按鈕。

  • 在“詳細資訊”選項卡中,記下您的消費者金鑰和消費者金鑰。

  • 在您的R會話中,您將使用API金鑰和API金鑰值。

  • 最後執行以下指令碼。這將從其在github上的儲存庫中安裝twitteR包。

install.packages(c("devtools", "rjson", "bit64", "httr"))  

# Make sure to restart your R session at this point 
library(devtools) 
install_github("geoffjentry/twitteR") 

我們感興趣的是獲取包含字串“big mac”的資料,並找出關於此資料的突出主題。為此,第一步是從Twitter收集資料。以下是我們收集Twitter所需資料的R指令碼。此程式碼也位於bda/part1/collect_data/collect_data_twitter.R檔案中。

rm(list = ls(all = TRUE)); gc() # Clears the global environment
library(twitteR)
Sys.setlocale(category = "LC_ALL", locale = "C")

### Replace the xxx’s with the values you got from the previous instructions

# consumer_key = "xxxxxxxxxxxxxxxxxxxx"
# consumer_secret = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# access_token = "xxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# access_token_secret= "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# Connect to twitter rest API
setup_twitter_oauth(consumer_key, consumer_secret, access_token, access_token_secret)

# Get tweets related to big mac
tweets <- searchTwitter(’big mac’, n = 200, lang = ’en’)
df <- twListToDF(tweets)

# Take a look at the data
head(df)

# Check which device is most used
sources <- sapply(tweets, function(x) x$getStatusSource())
sources <- gsub("</a>", "", sources)
sources <- strsplit(sources, ">")
sources <- sapply(sources, function(x) ifelse(length(x) > 1, x[2], x[1]))
source_table = table(sources)
source_table = source_table[source_table > 1]
freq = source_table[order(source_table, decreasing = T)]
as.data.frame(freq)

#                       Frequency
# Twitter for iPhone       71
# Twitter for Android      29
# Twitter Web Client       25
# recognia                 20
廣告

© . All rights reserved.