当前位置: 代码迷 >> 综合 >> 机器学习C2数据分析Exploration(ggplot2)
  详细解决方案

机器学习C2数据分析Exploration(ggplot2)

热度:80   发布时间:2024-01-08 23:36:47.0

数据分析

分析与验证

数据处理的方法:分析与验证

  • 分析:摘要表,基本可视化方法从数据中寻找隐含模式.
  • 验证:
    1. 若在新的数据集上发现了模式,就用另一批数据来测试这个模式的正规模型(交叉验证).
    2. 利用概率论来测试你原始数据集中发现是否只是巧合(假设检验).

什么是数据

  • 数据集: 充满数字和字符串的大表,表中每一行表示单个单侧数据,每一列是观测记录的一个属性.

  • 摘要统计和降维: 是两个截然不同的方向:

    1. 摘要统计要传达的是所有数据在某一列(某个属性)上的特点如何;
    2. 降维要做的是把数据集中所有列(属性)转换成少数几列, 得到的列数据对每一行来说是唯一的.

推断数据类型

数据字典: 每一列所代表的类型.
这里会用到三个重要的数据类型:
|R函数|简介|

因子类型的注意点:  R中的因子类型可以当做标签,但是这些标签在后台实际上还是编码为数值型:当程序员读取标签时,这些数值自动地映射为一个字符串索引数组中对应的字符串标签。因为于R在后台采用的是数值编码,所以你异想天开地把R因子的标签转换成数值可能会产生奇怪的结果,原因是你得到的数值可能由你自己的编码方案产生,而非原来与R因子的标签关联的数值。

三种编码:
1. 因子编码
这里写图片描述

  1. 虚拟变量编码
    这里写图片描述

  2. 物理学家编码
    这里写图片描述

注意:每拿到一份新数
据时,你都要先决定怎么用R处理每一列,再决定是以因子类型还是以字符串类型加载
其值。如果你不确定到底该以何种类型加载时,最好的方法是先以字符串类型加载,之后根据需
要再转换成因子类.

IsSpam仍然是一个定性概念,但是却以数字形式表示了布尔型的区别:1表示IsSpamtrue,而0表示IsSpamfalse。实际上,很多机器学习算法都要求定性数据是这种编码方式。

推断数据的含义

(略)

数值摘要表的函数

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')