数据分析
分析与验证
数据处理的方法:分析与验证
- 分析:摘要表,基本可视化方法从数据中寻找隐含模式.
- 验证:
- 若在新的数据集上发现了模式,就用另一批数据来测试这个模式的正规模型(交叉验证).
- 利用概率论来测试你原始数据集中发现是否只是巧合(假设检验).
什么是数据
数据集: 充满数字和字符串的大表,表中每一行表示单个单侧数据,每一列是观测记录的一个属性.
摘要统计和降维: 是两个截然不同的方向:
- 摘要统计要传达的是所有数据在某一列(某个属性)上的特点如何;
- 降维要做的是把数据集中所有列(属性)转换成少数几列, 得到的列数据对每一行来说是唯一的.
推断数据类型
数据字典: 每一列所代表的类型.
这里会用到三个重要的数据类型:
因子类型的注意点: R中的因子类型可以当做标签,但是这些标签在后台实际上还是编码为数值型:当程序员读取标签时,这些数值自动地映射为一个字符串索引数组中对应的字符串标签。因为于R在后台采用的是数值编码,所以你异想天开地把R因子的标签转换成数值可能会产生奇怪的结果,原因是你得到的数值可能由你自己的编码方案产生,而非原来与R因子的标签关联的数值。
三种编码:
1. 因子编码
虚拟变量编码
物理学家编码
注意:每拿到一份新数
据时,你都要先决定怎么用R处理每一列,再决定是以因子类型还是以字符串类型加载
其值。如果你不确定到底该以何种类型加载时,最好的方法是先以字符串类型加载,之后根据需
要再转换成因子类.
IsSpam
仍然是一个定性概念,但是却以数字形式表示了布尔型的区别:1
表示IsSpam
是true
,而0
表示IsSpam
是false
。实际上,很多机器学习算法都要求定性数据是这种编码方式。
推断数据的含义
(略)
数值摘要表的函数
summary quantile var
ex:
quantile(data, probs = c(0.25,0.5))
可视化分析数据ggplot2
- 直方图:
ggplot(heights.weights, aes(x = Height)) +geom_histogram(binwidth = 1)
- 密度图
ggplot(heights.weights, aes(x = Height, fill = Gender)) +geom_density()
-将密度图按照性别分成两行
ggplot(heights.weights, aes(x = Weight, fill = Gender)) +geom_density() +facet_grid(Gender ~ .)
- 点图并画出拟合曲线
ggplot(heights.weights, aes(x = Height, y = Weight)) +geom_point() +geom_smooth()
-按照不同性别画点图
ggplot(heights.weights, aes(x = Height, y = Weight)) +geom_point(aes(color = Gender, alpha = 0.25)) +#透明度scale_alpha(guide = "none") + scale_color_manual(values = c("Male" = "black", "Female" = "gray")) +#手动设置变量的颜色!!!theme_bw()#改变背景
-logit回归并画图
#将性别标识为0,1
heights.weights <- transform(heights.weights,Male = ifelse(Gender == 'Male', 1, 0))
#logit回归
logit.model <- glm(Male ~ Weight + Height,data = heights.weights,family = binomial(link = 'logit'))ggplot(heights.weights, aes(x = Height, y = Weight)) +geom_point(aes(color = Gender, alpha = 0.25)) +scale_alpha(guide = "none") + scale_color_manual(values = c("Male" = "black", "Female" = "gray")) +theme_bw() +#画直线stat_abline(intercept = -coef(logit.model)[1] / coef(logit.model)[2],slope = - coef(logit.model)[3] / coef(logit.model)[2],geom = 'abline',color = 'black')