- 大数据分析教程
- 大数据分析 - 首页
- 大数据分析 - 概述
- 大数据分析 - 特性
- 大数据分析 - 数据生命周期
- 大数据分析 - 架构
- 大数据分析 - 方法论
- 大数据分析 - 核心交付成果
- 大数据采用及规划考虑
- 大数据分析 - 主要利益相关者
- 大数据分析 - 数据分析师
- 大数据分析 - 数据科学家
- 大数据分析有用资源
- 大数据分析 - 快速指南
- 大数据分析 - 资源
- 大数据分析 - 讨论
大数据分析 - 数据清洗
数据收集完成后,我们通常会拥有来自不同来源、具有不同特征的各种数据。最直接的步骤是使这些数据源同质化,并继续开发我们的数据产品。但是,这取决于数据的类型。我们应该问问自己,使数据同质化是否实际可行。
也许数据源完全不同,如果将数据源同质化,信息损失将会很大。在这种情况下,我们可以考虑替代方案。一个数据源可以帮助我建立回归模型,另一个数据源可以建立分类模型吗?是否可以利用异质性来发挥优势,而不是仅仅丢失信息?做出这些决定正是使分析变得有趣和具有挑战性的原因。
对于评论而言,每个数据源可能使用不同的语言。同样,我们有两个选择:
同质化 - 这涉及将不同的语言翻译成我们拥有更多数据的那种语言。翻译服务的质量是可以接受的,但如果我们想使用API翻译海量数据,成本将非常高。有一些软件工具可用于此任务,但这也会很昂贵。
异质化 - 是否可以为每种语言开发一个解决方案?由于很容易检测语料库的语言,我们可以为每种语言开发一个推荐系统。这将涉及更多工作,需要根据可用语言的数量来调整每个推荐系统,但如果我们只有几种语言可用,这绝对是一个可行的选择。
Twitter小型项目
在本例中,我们需要首先清理非结构化数据,然后将其转换为数据矩阵,以便对其应用主题建模。一般来说,从Twitter获取数据时,有一些字符我们不感兴趣,至少在数据清洗过程的第一个阶段是这样。
例如,获取推文后,我们会得到这些奇怪的字符:“<ed><U+00A0><U+00BD><ed><U+00B8><U+008B>”。这些可能是表情符号,因此为了清理数据,我们将使用以下脚本将其删除。此代码也可在bda/part1/collect_data/cleaning_data.R文件中找到。
rm(list = ls(all = TRUE)); gc() # Clears the global environment source('collect_data_twitter.R') # Some tweets head(df$text) [1] "I’m not a big fan of turkey but baked Mac & cheese <ed><U+00A0><U+00BD><ed><U+00B8><U+008B>" [2] "@Jayoh30 Like no special sauce on a big mac. HOW" ### We are interested in the text - Let’s clean it! # We first convert the encoding of the text from latin1 to ASCII df$text <- sapply(df$text,function(row) iconv(row, "latin1", "ASCII", sub = "")) # Create a function to clean tweets clean.text <- function(tx) { tx <- gsub("htt.{1,20}", " ", tx, ignore.case = TRUE) tx = gsub("[^#[:^punct:]]|@|RT", " ", tx, perl = TRUE, ignore.case = TRUE) tx = gsub("[[:digit:]]", " ", tx, ignore.case = TRUE) tx = gsub(" {1,}", " ", tx, ignore.case = TRUE) tx = gsub("^\\s+|\\s+$", " ", tx, ignore.case = TRUE) return(tx) } clean_tweets <- lapply(df$text, clean.text) # Cleaned tweets head(clean_tweets) [1] " WeNeedFeminlsm MAC s new make up line features men woc and big girls " [1] " TravelsPhoto What Happens To Your Body One Hour After A Big Mac "
数据清洗小型项目的最后一步是获得已清洗的文本,我们可以将其转换为矩阵并应用算法。从存储在clean_tweets向量中的文本中,我们可以轻松地将其转换为词袋矩阵并应用无监督学习算法。