[读书笔记]机器学习:实用案例解析(2)

第2章  数据分析

#machine learing for heckers
#chapter 2

library(ggplot2)

heights.weights <- read.csv("ML_for_Hackers/02-Exploration/data/01_heights_weights_genders.csv", 
                            header = TRUE, sep = ",")

  

#不同区间宽度的直方图

ggplot(heights.weights, aes(x = Height)) + geom_histogram(binwidth = 1)
ggplot(heights.weights, aes(x = Height)) + geom_histogram(binwidth = 5)
ggplot(heights.weights, aes(x = Height)) + geom_histogram(binwidth = 0.001)

  

      

#密度曲线图

ggplot(heights.weights, aes(x = Height)) + geom_density()

  

 

#峰值处平坦,考虑图像有结构缺失,根据性别分别绘制密度曲线图

ggplot(heights.weights, aes(x = Height, fill = Gender)) + geom_density()
ggplot(heights.weights, aes(x = Weight, fill = Gender)) + geom_density()
ggplot(heights.weights, aes(x = Weight, fill = Gender)) + geom_density() + facet_grid(Gender ~ .)

  

           

 

#正态分布:钟形的窄尾分布,单峰对称
#柯西分布:钟形的重尾分布,单峰对称

set.seed(1)
normal.values <- rnorm(250, 0, 1)
cauchy.values <- rcauchy(250, 0, 1)
ggplot(data.frame(X = normal.values), aes(x = X)) + geom_density()
ggplot(data.frame(X = cauchy.values), aes(x = X)) + geom_density()

  

        

 

#gamma分布
#gamma分布只有正值

gamma.values <- rgamma(100000, 1, 0.001)
ggplot(data.frame(X = gamma.values), aes(x = X)) + geom_density()

  

 

#从身高体重预测性别(分类器)

#书中代码画图命令有"stat_abline"完成添加直线操作,而package: ggplot2(version 2.1.0)中"stat"族函数已经没有"abline",只能用"geom"族完成

heights.weights <- transform(heights.weights, Male = ifelse(Gender == 'Male', 1, 0))
logit.model <- glm(Male ~ Weight + Height, data = heights.weights, 
                   family = binomial(link = 'logit'))
ggplot(heights.weights, aes(x = Height, y = Weight, color = Gender)) + geom_point() + 
  geom_abline(intercept = -coef(logit.model)[1]/coef(logit.model)[2], 
              slope = -coef(logit.model)[3]/coef(logit.model)[2], 
              color = 'black')

  

posted @ 2016-06-05 22:29  gy_jerry  阅读(666)  评论(0编辑  收藏  举报