数据分析实例--R语言如何对垃圾邮件进行分类

Coursera上数据分析实例 --R语言如何对垃圾邮件进行分类

Structure of a Data Analysis

  1. 数据分析的步骤

l  Define the question

l  Define the ideal data set

l  Determine what data you can access

l  Obtain the data

l  Clean the data

l  Exploratory data analysis

l  Statistical prediction/model

l  Interpret results

l  Challenge results

l  Synthesize/write up results

l  Create reproducible code

  1. A sample

1)    问题.

Can I automatically detect emails that are SPAM or not?

2)    具体化问题

Can I use quantitative characteristics of the emails to classify them as SPAM/HAM?

3)    获取数据

http://search.r-project.org/library/kernlab/html/spam.html

4)    取样

#if it isn‘t installed,please install the package first.

library(kernlab)

data(spam)

#perform the subsampling

set.seed(3435)

trainIndicator =rbinom(4601,size = 1,prob = 0.5)

table(trainIndicator)

trainSpam = spam[trainIndicator == 1, ]

testSpam = spam[trainIndicator == 0, ]

5)    初步分析

a)      Names:查看的列名

names(trainSpam)

b)      Head:查看前六行

head(trainSpam)

c)       Summaries:汇总

table(trainSpam$type)

d)      Plots:画图,查看垃圾邮件及非垃圾邮件的分布

plot(trainSpam$capitalAve ~ trainSpam$type)

上图分布不明显,我们取对数后,再看看

plot(log10(trainSpam$capitalAve + 1) ~ trainSpam$type)

e)      寻找预测的内在关系

plot(log10(trainSpam[, 1:4] + 1))

f)        试用层次聚类

hCluster = hclust(dist(t(trainSpam[, 1:57])))

plot(hCluster)

太乱了.不能发现些什么。老方法不是取log看看

hClusterUpdated = hclust(dist(t(log10(trainSpam[, 1:55] + 1))))

plot(hClusterUpdated)

6)    统计预测及建模

trainSpam$numType = as.numeric(trainSpam$type) - 1

costFunction = function(x, y) sum(x != (y > 0.5))

cvError = rep(NA, 55)

library(boot)

for (i in 1:55) {

lmFormula = reformulate(names(trainSpam)[i], response = "numType")

glmFit = glm(lmFormula, family = "binomial", data = trainSpam)

cvError[i] = cv.glm(trainSpam, glmFit, costFunction, 2)$delta[2]

}

## Which predictor has minimum cross-validated error?

names(trainSpam)[which.min(cvError)]

7)     检测

## Use the best model from the group

predictionModel = glm(numType ~ charDollar, family = "binomial", data = trainSpam)

## Get predictions on the test set

predictionTest = predict(predictionModel, testSpam)

predictedSpam = rep("nonspam", dim(testSpam)[1])

## Classify as `spam‘ for those with prob > 0.5

predictedSpam[predictionModel$fitted > 0.5] = "spam"

## Classification table 查看分类结果

table(predictedSpam, testSpam$type)

分类错误率:0.2243 =(61 + 458)/(1346 + 458 + 61 + 449)

8)    Interpret results(结果解释)

The fraction of charcters that are dollar signs can be used to predict if an email is Spam

Anything with more than 6.6% dollar signs is classified as Spam

More dollar signs always means more Spam under our prediction

Our test set error rate was 22.4%

9)    Challenge results

10)  Synthesize/write up results

11)   Create reproducible code

时间: 2024-10-20 14:47:07

数据分析实例--R语言如何对垃圾邮件进行分类的相关文章

数据分析与R语言研讨班

为满足广大科研工作者在文章发表中遇到的图表处理的苦恼,让您真正了解R.使用R,给您的文章添色添彩,思数云bihadoop将于2014年11月15日举办<数据分析与R语言>研讨班,从基础入手结合实战完成您的高级制图需求.欢迎报名参加!!!!!! 主办单位:思数云服务中心 举办地:北京,北京市回龙观龙冠大厦 培训时间:第五期2014年11月1日(已结束) 第六期:2014年11月15日(报名中...) 报名截止:2014年11月11日 授课内容(部分) 等级 授课题目 授课内容 基础 R语言基础知

数据分析,R语言

数据结构 创建向量和矩阵 1 函数c(), length(), mode(), rbind(), cbind() 求平均值,和,连乘,最值,方差,标准差 1 函数mean(), sum(), min(), max(), var(), sd(), prod() 帮助文档 1 函数help() 生成向量 1 seq() 生成字母序列letters 新建向量 1 Which()函数,rev()函数,sort()函数 生成矩阵 1 函数matrix() 矩阵运算 1 函数t(),矩阵加减 矩阵运算 1

数据分析和R语言的那点事儿_1

最近遇到一些程序员同学向我了解R语言,有些更是想转行做数据分析,故开始学习R或者Python之类的语言.在有其他编程语言的背景下,学习R的语法的确是一件十分简单的事.霸特,如果以为仅仅是这样的话那就图样图森破. 首先,数据分析是一个非常庞杂的职能,也许岗位抬头均为数据分析师的两人,做的事情却大不相同——比如使用hadoop做日志统计和使用Excel处理报表,这简直是两个领域,相互之间的职能了解,可能仅为对方工作的冰山一角. 其次,无论任何行业的数据分析,其日常工作主要为以下几块: 数据获取——数

python 数据分析,R语言与数据挖掘|学习资料分享 05

python 数据分析 为什么选 python 做数据分析? 在数据分析和交互.探索性计算以及数据可视化等方面,Python 将不可避免地接近于其他开源和商业的领域特定编程语言/工具,如R.MATLAB.SAS.Stata等.近年来,由于 Python 有不断改良的库(主要是 pandas),使其成为数据处理任务的一大替代方案.结合其在通用编程方面的强大实力,我们完全可以只使用 Python 这一种语言去构建以数据为中心的应用程序. R语言是由 AT&T 贝尔实验室开发的一种用来进行数据探索.统

大数据之R语言速成与实战,送给数据分析爱好者

课程介绍 R是用于统计分析.绘图的语言和操作环境,属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具. R语言语法通俗易懂,很容易学会和掌握语言的语法.而且学会之后,我们可以编制自己的函数来扩展现有的语言.这也就是为什么它的更新速度比一般统计软件,如SPSS.SAS等快得多.大多数最新的统计方法和技术都可以在R中直接得到. 作为当前在世界范围内最受欢迎的数据挖掘开发语言--R语言以其特有的开放性.高可扩展性以及顶尖的制图功能吸引了越来越多的数据分析爱好者.

R语言基因组数据分析可能会用到的data.table函数整理

R语言data.table包是自带包data.frame的升级版,用于数据框格式数据的处理,最大的特点快.包括两个方面,一方面是写的快,代码简洁,只要一行命令就可以完成诸多任务,另一方面是处理快,内部处理的步骤进行了程序上的优化,使用多线程,甚至很多函数是使用C写的,大大加快数据运行速度.因此,在对大数据处理上,使用data.table无疑具有极高的效率.这里主要介绍在基因组数据分析中可能会用到的函数. fread 做基因组数据分析时,常常需要读入处理大文件,这个时候我们就可以舍弃read.ta

下载零基础数据分析与挖掘R语言实战课程(R语言)

随着大数据在各行业的落地生根和蓬勃发展,能从数据中挖金子的数据分析人员越来越宝贝,于是很多的程序员都想转行到数据分析,挖掘技术哪家强?当然是R语言了,R语言的火热程度,从TIOBE上编程语言排名情况可见一斑.于是善于学习的程序员们开始了R语言的学习之旅.对于有其他语言背景的程序员来说,学习R的语法小菜一碟,因为它的语法的确太简单了,甚至有的同学说1周就能掌握R语言,的确如此.但是之后呢?……好像进行不下去了!死记硬背记住了两个分析模型却不明其意,输出结果如同天书不会解读,各种参数全部使用缺省值,

基于R语言的数据分析和挖掘方法总结——描述性统计

1.1 方法简介 描述性统计包含多种基本描述统计量,让用户对于数据结构可以有一个初步的认识.在此所提供之统计量包含: 基本信息:样本数.总和 集中趋势:均值.中位数.众数 离散趋势:方差(标准差).变异系数.全距(最小值.最大值).内四分位距(25%分位数.75%分位数) 分布描述:峰度系数.偏度系数 用户可选择多个变量同时进行计算,亦可选择分组变量进行多组别的统计量计算. 1.2 详细介绍 1.2.1 样本数和总和 1. R语言涉及的方法:length(x) 1.2.2 均值(Mean) 1.

2015CDAS中国数据分析师行业峰会:R语言量化投资数据分析应用

前言 第一次在以数据分析为切入点的会议上做演讲,感觉还是挺不一样的.大会分为"金融数据洞察","医疗数据洞察","电商数据洞察","大小数据洞察"的4个部分,分别介绍了数据分析在不同行业的应用情况.当然,这次我是在"金融数据洞察"分论坛. 我非常有幸作为分享嘉宾参加2015年的中国数据分析师行业峰会,分享R语言在金融领域中的应用. 目录 我的演讲主题:R语言量化投资数据分析应用 会议体验和照片分享 整体文章