《机器学习与数据科学(基于R的统计学习方法)》——2.13 从谷歌分析中读取数据

简介:

本节书摘来异步社区《机器学习与数据科学(基于R的统计学习方法)》一书中的第2章,第2.13节,作者:【美】Daniel D. Gutierrez(古铁雷斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.13 从谷歌分析中读取数据

另一个非常有用的数据源是谷歌分析。很多公司使用谷歌的网站统计服务来观察网站的使用情况。谷歌分析的成熟程度是令人惊讶的,其中最大的优点是:这项服务是免费使用的。一旦植入到网站中(使用谷歌提供的一个可以添加到网站中的代码片段),就能收集大量数据,用于后续分析。虽然谷歌提供了一套令人印象深刻的工具来分析网站统计数据,你也可以直接连接数据,这样就能用这些数据执行自己定制的机器学习算法。在本节中,我们会介绍如何连接谷歌分析数据。

有两种方法连接谷歌分析数据。第一,你可以使用你用来跟踪网站的账户来登录谷歌分析。你运行的每一份报表都有一个Export按钮,可以用来下载报告中的原始数据。我们的想法是,用一段长时间范围的数据运行得到一份详细的报表,这样你就能得到一份优良的数据样本,可用于后续的机器学习分析。我们将在下面的案例中看到这样的示例。连接谷歌分析的另一种方法是使用RGoogleAnalytics包,其中包含了大量R函数,能帮助你使用谷歌分析Data Export API。我们也能在下面的例子中看见这种用法。

让我们首先用导出工具连接谷歌分析数据。在这个例子中,我用一个监控客户端网站的账号登录谷歌分析。我通过Traffic Sources -> Sources -> All Traffic这一路径选择一种标准报表。在查看了报表之后,我从顶端的水平菜单选择Export -> Excel(XLSX),将文件保存在工作目录下面的data文件夹中。谷歌分析生成的Excel文件有多个工作表,通常有一个Summary表和一个或多个Datasheets表。取决于你想用数据做什么事情,你必须决定把哪个表读入R中。谷歌分析使用的一些列名和xlsx包不兼容,所以你需要在Excel中打开文件,手动编辑一个或者多个可能造成冲突的列名。例如,你需要把列名Pages/Visit改成更适合R的表述,例如Pages_Visit。图2-4展示了一个准备读入到R中使用的表格:

> library(xlsx)
> GA <- read.xlsx2("./data/Analytics_All_Traffic.xlsx", sheetIndex=2)
> head(GA)
      Source_Medium Visits    Pages_Visit Avg_Visit_Duration
1    google / organic 1349.0 5.638991845811712 151.54558932542625
2    (direct) / (none) 562.0 4.119217081850533 114.98220640569394
3 fashiondistrict.org / referral 242.0 3.9214876033057853   
140. 30578512396696
4     yahoo / organic  73.0 3.6301369863013697 66.53424657534246
5     bing / organic  71.0 5.549295774647887 104.14084507042253
6    oohlaluxe.net / referral  36.0 4.361111111111111  
 116. 80555555555556
   Percent_New_Visits     Bounce_Rate
1  0.614529280948851      0.5181616011860638
2  0.597864768683274      0.5747330960854092
3  0.8099173553719008     0.45041322314049587
4  0.684931506849315      0.410958904109589
5  0.647887323943662      0.29577464788732394
6  0.8888888888888888     0.3611111111111111```
现在让我们看看使用RGoogleAnalytics包中的RGoogleAnalytics API。在R中,你需要用OAuth2例行程序来认证你的身份,创建一个查询,并把结果保存在数据框中。在开始之前,RGoogleAnalytics库依赖于另外两个库:RCurl提供了在R中的https支持;RJSON提供了解析API返回的RJSON的功能。
<div style="text-align: center"><img src="https://yqfile.alicdn.com/6f72af38069089feea74ee263927c385c8332c74.png" width="" height="">
</div>

install.packages("RCurl")
install.packages("RJSON")
library("RGoogleAnalytics")`
使用下面这段语句能打开一个浏览器窗口,这样就可以用谷歌的OAuth2认证身份。参照页面上的指示,将Access Token复制到剪贴板中,然后将它粘贴到R控制台中。

> query <- QueryBuilder()
> access_token <- query$authorize()```
接下来,这段语句会使用你上面得到的access_token来创建一个新的谷歌分析API对象。

ga <- RGoogleAnalytics()
ga.profiles <- ga$GetProfileData(access_token)
ga.profiles # List the GA profiles`

下面这段代码是将谷歌分析作为数据源读取过程的主要部分。你建立了一个查询字符串,并使用配置文件设置其索引值。

> query$Init(start.date = "2013-07-01",
      end.date = "2013-07-01",
      dimensions = "ga:date,ga:pagePath",
      metrics = "ga:visits,ga:pageviews,ga:timeOnPage",
      sort = "ga:visits",
      #filters="",
      #segment="",
      max.results = 99,
      table.id =
       paste("ga:",ga.profiles$id[1],sep="",collapse=","),
       access_token=access_token)

> ga.data <- ga$GetReportData(query)
[1] "Your query matched 88 results that are stored to dataframe ga.data"
> head(ga.data)
#  date     pagePath
1  20130701 /SearchResult.asp?Type=ALL&String=&CompanyID= 127&CategoryID=0
2  20130701 /SearchResult.asp?Type=ALL&String=&CompanyID= 130&CategoryID=0
3  20130701 /SearchResult.asp?Type=ALL&String=&CompanyID= 175&CategoryID=0
4  20130701 /SearchResult.asp?Type=ALL&String=&CompanyID= 181&CategoryID=0
5  20130701 /SearchResult.asp?Type=ALL&String=&CompanyID= 184&CategoryID=0
6  20130701 /SearchResult.asp?Type=ALL&String=&CompanyID= 186&CategoryID=0

    visits   pageviews   timeOnPage
1   0        3           11
2   0        4           20
3   0        2           13
4   0        1           1
5   0        2           11
相关文章
|
3天前
|
机器学习/深度学习 分布式计算 算法
联邦学习是保障数据隐私的分布式机器学习方法
【6月更文挑战第13天】联邦学习是保障数据隐私的分布式机器学习方法,它在不暴露数据的情况下,通过在各设备上本地训练并由中心服务器协调,实现全局模型构建。联邦学习的优势在于保护隐私、提高训练效率和增强模型泛化。已应用于医疗、金融和物联网等领域。未来趋势包括更高效的数据隐私保护、提升可解释性和可靠性,以及与其他技术融合,有望在更多场景发挥潜力,推动机器学习发展。
12 4
|
3天前
|
机器学习/深度学习 数据采集 算法
机器学习入门:算法与数据的探索之旅
【6月更文挑战第13天】本文介绍了机器学习的基础,包括算法和数据处理的重要性。机器学习算法分为监督学习(如线性回归、决策树)、非监督学习(如聚类、降维)和强化学习。数据处理涉及数据清洗、特征工程、数据分割及标准化,是保证模型性能的关键。对于初学者,建议学习基础数学、动手实践、阅读经典资料和参与在线课程与社区讨论。
|
10天前
|
机器学习/深度学习 传感器 算法
物联网(IoT)数据与机器学习的结合
【6月更文挑战第6天】物联网和机器学习加速融合,驱动数据收集与智能分析。通过机器学习算法处理 IoT 数据,实现智能家居、工业生产的智能化。示例代码展示如何用线性回归预测温度。结合带来的优势包括实时监测、预警、资源优化,但也面临数据质量、隐私安全、算法选择等挑战。未来需强化技术创新,应对挑战,推动社会智能化发展。
42 0
|
11天前
|
机器学习/深度学习 数据采集 算法
踏上机器学习之路:探索数据科学的奥秘与魅力
踏上机器学习之路:探索数据科学的奥秘与魅力
15 0
|
16天前
|
机器学习/深度学习 算法
利用机器学习进行股市预测的可行性分析
【5月更文挑战第31天】本文探讨了机器学习技术在股市预测中的应用。通过对历史数据的分析和模型训练,我们可以构建出能够预测未来股市走势的模型。然而,由于股市受到多种因素的影响,包括经济、政治和社会因素等,因此预测的准确性仍然存在挑战。本文将介绍一些常见的机器学习算法和它们在股市预测中的应用,并提供一些建议来提高预测的准确性。
|
19天前
|
机器学习/深度学习 自然语言处理 安全
探索机器学习中的自然语言处理技术网络安全与信息安全:保护数据的关键策略
【5月更文挑战第27天】 在数字化时代,自然语言处理(NLP)技术是连接人类语言与计算机理解的桥梁。本文将深入探讨NLP的核心概念、关键技术以及在不同领域的应用实例。我们将从基础原理出发,解析词嵌入、语法分析到深度学习模型等关键步骤,并讨论NLP如何推动聊天机器人、情感分析和自动文摘等技术的发展。通过案例分析,揭示NLP在实际应用中的挑战与前景,为未来研究和应用提供参考。
|
20天前
|
机器学习/深度学习 数据采集 分布式计算
【机器学习】Spark ML 对数据进行规范化预处理 StandardScaler 与向量拆分
标准化Scaler是数据预处理技术,用于将特征值映射到均值0、方差1的标准正态分布,以消除不同尺度特征的影响,提升模型稳定性和精度。Spark ML中的StandardScaler实现此功能,通过`.setInputCol`、`.setOutputCol`等方法配置并应用到DataFrame数据。示例展示了如何在Spark中使用StandardScaler进行数据规范化,包括创建SparkSession,构建DataFrame,使用VectorAssembler和StandardScaler,以及将向量拆分为列。规范化有助于降低特征重要性,提高模型训练速度和计算效率。
|
20天前
|
机器学习/深度学习 分布式计算 算法
【机器学习】Spark ML 对数据特征进行 One-Hot 编码
One-Hot 编码是机器学习中将离散特征转换为数值表示的方法,每个取值映射为一个二进制向量,常用于避免特征间大小关系影响模型。Spark ML 提供 OneHotEncoder 进行编码,输入输出列可通过 `inputCol` 和 `outputCol` 参数设置。在示例中,先用 StringIndexer 对类别特征编码,再用 OneHotEncoder 转换,最后展示编码结果。注意 One-Hot 编码可能导致高维问题,可结合实际情况选择编码方式。
|
26天前
|
机器学习/深度学习 算法 数据处理
从数据科学到机器学习的过渡:技术与思维的演进
【5月更文挑战第21天】本文探讨了从数据科学到机器学习的过渡,强调了技术与思维的转变。数据科学侧重数据处理和分析,为机器学习提供基础;机器学习是数据科学的强大力量,涉及算法开发。过渡需掌握机器学习算法、编程语言(如Python)及库,转变思维方式,注重预测和优化分析。建议包括深入学习算法、实践项目、掌握编程工具和保持好奇心。这一过渡是职业发展的重要步骤。
|
29天前
|
机器学习/深度学习 数据采集 人工智能
论文介绍:机器学习中数据集规模增长的极限分析
【5月更文挑战第17天】论文《机器学习中数据集规模增长的极限分析》探讨了数据集大小对AI模型性能的影响,预测语言数据可能在2026年前耗尽,图像数据在2030-2060年可能面临相同问题。研究显示数据积累速度无法跟上数据集增长,可能在2030-2040年间导致训练瓶颈。然而,算法创新和新数据源的发展可能缓解这一问题。[链接](https://arxiv.org/pdf/2211.04325.pdf)
41 2