看书标记【数据科学:R语言实战 1】

2024-01-27 16:20

本文主要是介绍看书标记【数据科学:R语言实战 1】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

看书标记——R语言

  • Chapter 1 模式的数据挖掘
      • 1.1 聚类分析
        • 1.1.1 k-means聚类
          • 用法
          • 示例
        • 1.1.2 k-medoids聚类
          • 用法
          • 示例
          • 1.1.3 分层聚类
          • 用法
          • 示例
        • 1.1.4 期望最大化(EM)
          • 用法
          • 示例
        • 1.1.5 密度估计
          • 用法
          • 示例
      • 1.2 异常检测
        • 1.2.1 显示异常值
          • 示例 1
          • 示例 2
          • 示例 3
        • 1.2.2 计算异常值
          • 示例 1(用name函数创建异常)
          • 示例 2(DMwR中的lofactor函数)
      • 1.3 关联规则(购物篮分析)
          • 用法
          • 示例

【数据科学:R语言实战 1】

Chapter 1 模式的数据挖掘

1.1 聚类分析

1.1.1 k-means聚类

步骤:
(1)从数据中选取k随机行(质心)
(2)使用Lloyd’s算法确定集群
(3)与质心的距离对每个数据点进行分配
(4)将质心重新用与其相关的所有点的平均值代替
(5)对与质心距离最近的数据重新分配
(6)循坏3、4,直到数据不再分配
第三步表示k-means无法与相当稀疏的数据或者有较多异常值的数据一起工作,另外,集群最好有线性形状。

用法

kmeans()

  • 参数
    x 待分析的数据矩阵
    centers 集群数量
    iter.max 最大迭代次数
    nstart 随机集的使用次数
    algorithm 算法Hartigan-Wong、Lloyd、Forgy、MacQueen.
    trace跟踪信息
  • 属性
    cluster集群分配
    centers集群中心
    totss总平方和
    withinss每个聚类平方和的向量
    tot.withinss距离平方和总量
    betweenss聚类组间平方和
    size每个聚类的数据点数量
    iter执行迭代的次数
    ault专家诊断
示例
x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
x
fit <- kmeans(x,10)
fit
#碎石图选集群数
results <-matrix(nrow=14,ncol=2,dimnames=list(2:15,c("clusters","sumsquares")))
for(1 in 2:15){fit<-kmeans(x,i)results[i-1,1]<-iresults[i-1,2]<-fit$totss}plot(results)

cluster means用于集群分配的平均值的分解
cluster vector将100个数分配的集群
cluster sum of squares总平方和94.6%是拟合度的表现。

1.1.2 k-medoids聚类
用法

pam()

  • 参数
    x 待分析的数据矩阵(基于diss标记)
    k 集群数量
    diss FALSE(x是矩阵),TRUE(x是相异度矩阵)
    metric euclidean(欧几里得)、manhattan(曼哈顿距离)
    medoids 如果分配到了NULL,就需要开发一组medoids,否则,这是一组初步medoids.
    stand 使用x的度量标准化
    cluster.only TRUE返回聚类
    do.swap 0、1是否进行交换
    keep.diss 0、1是否保存相异点在结果中
    keep.data 0、1是否保留数据在结果中
    trace.lev 跟踪级别,0表示无跟踪信息
示例

medoids.csv数据

library(cluster)
x <- read.table(“medoids.csv”, header=TRUE, sep=",")
result <- pam(x, 2, FALSE, "euclidean")  ##medoids函数
resultsummary(result)
plot(result$data, col = result$clustering)

medoids指定使用第3行和第6行
clustering vector聚集群
objective function展示构建阶段和交换阶段的函数值

1.1.3 分层聚类

聚合法和分裂法

用法

hclust()

  • 参数
    d 矩阵
    method 附聚法,“ward.D/ward.D2/single/complete/average/mcquitty/median/centroid”
示例
dat <- matrix(rnorm(100), nrow=10, ncol=10)  #以正态数据为例
dat
hc <- hclust(dist(dat));hc
plot(hc)
1.1.4 期望最大化(EM)

mclust函数包里的Mclust函数(基于模型的聚类、分类、密度估计、贝叶斯正则化等,通过EM算法拟合正态混合模型)

用法

Mclust

  • 参数
    data 矩阵
    G 使用的集群数量的向量,用于BIC,默认值为1:9
    modelNames 使用的模型名称的向量。当Mclust函数试图决定哪个项目属于某一集群时,函数就会使用模。单变量混合、多变量混合、单一分量数据集有不同的模型名称。(E:等方差;V:变量方差.)
    prior 平均值的可选共轭先验
    control EM 的控制参数列表,默认为List
示例
install.packages(“mclust”)
library(mclust)
data <- read.csv("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data")  ##iris数据
fit <- Mclust(data)  ##用EM计算最优匹配
fit
summary(fit)
plot(fit)

log.likelihood:BIC数值的对数似然值
n:数据量
df:自由度
BIC:最优贝叶斯信息准则
ICL:集成完全数据似然值(ICL与BIC相同,即可对数据点进行分类)
plot中有四类图

  • 用于选择集群数量的BIC数值:用不同的模型表现BIC的情况,多变量实例中,最不适合使用VEV模型。
  • 有关聚类的图:选取提供数据最优聚类的分量(x5.1和x1.4会产生距离最近的集群)。
  • 有关分类不确定性的图:不同选择对聚类迭代的影响。
  • 有关集群的轨道图:每个集群的轨道图,突出显示中心点可能会出现在哪个地方。
1.1.5 密度估计

density(密度估计)、DBSCAN(确定固定点集群的聚类)、OPTICS(确定广泛分布集群的聚类)函数

用法

density()

  • 参数
    x 矩阵
    bw 使用的平滑带宽
    adjust 倍增器,用于调节带宽
    kernel 平滑核心(gaussian、rectangle、trianglar、epanechnikov、biweight、cosine、optcosine)
    weights 与x长度一致的权向量
    give.Rkern TRUE表示未预估参数
    N 预估的密度点数
    from,to 最左边点和最右边点
    na.rm TRUE 表示移除缺失值
    bw.nrd0(x)/bw.nrd(x)/bw.ucv(x)/bw.bcv(x)/bw.SJ(x)
示例
data <- read.csv("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data")
#计算X5.1的密度
d <- density(data$X5.1)
d
plot(d)

1.2 异常检测

统计测试,基于深度、偏差、距离、密度的方法,高维方法。

1.2.1 显示异常值
示例 1
identify(in boxplot)  #identify函数便于标记散点图的点,boxplot生成盒须图
---------------------------------------------------------------------
y <- rnorm(100)
boxplot(y)
identify(rep(1, length(y)), y, labels = seq_along(y))
示例 2

boxplot函数会自动计算数据集的异常值

x <- rnorm(100)
summary(x)
boxplot.stats(x)$out  ##显示异常值
boxplot(x)
boxplot(mpg~cyl,data=mtcars, xlab="Cylinders", ylab="MPG") ##汽车的数据示例
示例 3

二维的箱线图异常检测(并集而非交集)

x <- rnorm(1000);y <- rnorm(1000)
f <- data.frame(x,y)
a <- boxplot.stats(x)$out;b <- boxplot.stats(y)$out
list <- union(a,b)
plot(f)
px <- f[f$x %in% a,];py <- f[f$y %in% b,]
p <- rbind(px,py)
par(new=TRUE)
plot(p$x, p$y,cex=2,col=2)
#结果并不准确,需结合实际
1.2.2 计算异常值
示例 1(用name函数创建异常)
data <- read.csv("http://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data")
outliers <- function(data, low, high) {
outs <- subset(data, data$X5.1 < low | data$X5.1 > high)
return(outs)
}
outliers(data, 4.5, 7.5)  ## <4.5,>7.5为异常
示例 2(DMwR中的lofactor函数)
install.packages(“DMwR”)
library(DMwR)
nospecies <- data[,1:4]  ##移除“种类”列
scores <- lofactor(nospecies, k=3)   #确定异常值
plot(density(scores)) #画出异常值分布

1.3 关联规则(购物篮分析)

apriori()

用法
  • 参数
    data 事务数据
    parameter 默认支持度0.1、置信度0.8、最大长度10
    appearance 用于限制规则中出现的项目
    control 用于调整所用算法的性能
示例
install.packages("arules")
library(arules)
data <- read.csv("http://www.salemmarafi.com/wp-ontent/uploads/2014/03/groceries.csv")
rules <- apriori(data) ;rules  #生成规则
##置信度默认为0.8,三个项目中有15295个事务,有五个规则
inspect(rules)
rules <- apriori(data, parameter = list(supp = 0.001, conf = 0.8))  #当参数修改后,生成500多个规则,但是置信度为0.001

这篇关于看书标记【数据科学:R语言实战 1】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/650813

相关文章

python处理带有时区的日期和时间数据

《python处理带有时区的日期和时间数据》这篇文章主要为大家详细介绍了如何在Python中使用pytz库处理时区信息,包括获取当前UTC时间,转换为特定时区等,有需要的小伙伴可以参考一下... 目录时区基本信息python datetime使用timezonepandas处理时区数据知识延展时区基本信息

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Pandas统计每行数据中的空值的方法示例

《Pandas统计每行数据中的空值的方法示例》处理缺失数据(NaN值)是一个非常常见的问题,本文主要介绍了Pandas统计每行数据中的空值的方法示例,具有一定的参考价值,感兴趣的可以了解一下... 目录什么是空值?为什么要统计空值?准备工作创建示例数据统计每行空值数量进一步分析www.chinasem.cn处

C语言中位操作的实际应用举例

《C语言中位操作的实际应用举例》:本文主要介绍C语言中位操作的实际应用,总结了位操作的使用场景,并指出了需要注意的问题,如可读性、平台依赖性和溢出风险,文中通过代码介绍的非常详细,需要的朋友可以参... 目录1. 嵌入式系统与硬件寄存器操作2. 网络协议解析3. 图像处理与颜色编码4. 高效处理布尔标志集合

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

Go语言开发实现查询IP信息的MCP服务器

《Go语言开发实现查询IP信息的MCP服务器》随着MCP的快速普及和广泛应用,MCP服务器也层出不穷,本文将详细介绍如何在Go语言中使用go-mcp库来开发一个查询IP信息的MCP... 目录前言mcp-ip-geo 服务器目录结构说明查询 IP 信息功能实现工具实现工具管理查询单个 IP 信息工具的实现服

Spring 请求之传递 JSON 数据的操作方法

《Spring请求之传递JSON数据的操作方法》JSON就是一种数据格式,有自己的格式和语法,使用文本表示一个对象或数组的信息,因此JSON本质是字符串,主要负责在不同的语言中数据传递和交换,这... 目录jsON 概念JSON 语法JSON 的语法JSON 的两种结构JSON 字符串和 Java 对象互转

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

C++如何通过Qt反射机制实现数据类序列化

《C++如何通过Qt反射机制实现数据类序列化》在C++工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作,所以本文就来聊聊C++如何通过Qt反射机制实现数据类序列化吧... 目录设计预期设计思路代码实现使用方法在 C++ 工程中经常需要使用数据类,并对数据类进行存储、打印、调试等操作。由于数据类