R可视化

降维

一、PCA

install.packages("pacman")
pacman::p_load(rvest,tidyverse,mclust,factoextra,ggplot2,umap,GGally,dplyr)

pca第一步跟第二步是去中心化和去标准差,使每个维度均值等于0,每个维度的方差等于1
pca第三步跟第四步是找到最大投影方差的方向,然后在此方向投影
例子

install.packages("ISLR")
library("ISLR")
View(College)
data=data.matrix(College)将变量变成数值型变量
data=data.frame(data)
ggpairs(data,aes(col="red"),
        upper=list(continuous="cor"),  上三角plot图为相关系数
        lower=list(continuous="points"),  下三角plot图为散点图
        diag=list(continuous="densityDiag"))+  对角线plot图为密度图
  theme_bw()
ggcorr(data =data[,1:12],label = TRUE,
       label_size = 4, label_round = 2, 
       label_alpha = TRUE, hjust = 0.8, size = 3, color = "grey50")#相关性热图
PCA--prcomp
pr.out=prcomp(data,scale. = TRUE)
names(pr.out)#"sdev"     "rotation" "center"   "scale"    "x"   是pca的五种变量
pr.out$center#标准化——均值等于0:
             #第一个维度均值减去1.7271 第二个维度均值减去3001.638353....
pr.out$scale#标准化——去标准差:
             #每个维度减去均值之后就要除以标准差:第一个除以0.4457084 第二个除以3870.2014844....
pr.out$rotation#每一列就是一个投影方向:每一个特征向量对应一个特征值
pr.out$sdev    #特征值大的说明投影后的投影方差就大
pr.out$x[,1:3]降维 降到三个维度
plot(pr.out$x[,1:2]) 二维可视化

碎石图

fviz_eig(pr.out, addlabels= TRUE)#碎石图帮助我们看新的变量贡献度,高度为特征值所占的比例

biplot

biplot(pr.out)#18个维度即18个箭头

考虑降到哪个维度

pr.var=pr.out$sdev^2
plot(pr.var,ylab = "variance",xlab = "Principal Component",type = 'b')
找像肘关节的节点——567,所以降到7
Rplot01.png

查看有多少信息损失

pve=cumsum(pr.var)/cumsum(pr.var)[length(pr.var)]
pve[7] 0.8423239,说明损失大约16%的信息
pve[13] 0.9745446,说明损失大约2%的信息,故应该从18维降维到13维
pr.out$x[,1:13]
PCA--princomp
pc.cr<-princomp(data,cor=TRUE)
summary(pc.cr) 每个主成分重要性的排序
# Proportion of Variance 0.3033296    意思是占总方差的30%
loadings(pc.cr) 看主成分的得分,看每种因素属于哪种主成分
plot(pc.cr)#显示主成分分数的图
biplot(pc.cr)#能够清楚的看到哪些特征对主成分(PC)的贡献值大

二、t-SNE

t-SNE本质是一种嵌入模型,能够将高维空间中的数据映射到低维空间中并保留数据集的局部特性
Rtsne输入对象必须为矩阵
dims参数设置降维后的维度,默认为2
theta参数取值越大,结果的准确率越低,默认为0.5
theta此处设置为0.0 ,可计算出t-SNE的准确值,但是运行时间会比较长
pca表示是否对输入的数据进行pca分析,此处设置TRUE
dims参数设置降维后的维度,默认为2

聚类

监督式学习:训练集有明确答案,监督学习就是寻找问题(又称输入、特征、自变量)与答案(又称输出、目标、因变量)之间关系的学习方式。
监督学习模型有两类:分类和回归。
• 分类模型:目标变量是离散的分类型变量
• 回归模型:目标变量是连续性数值型变量
无监督学习:只有数据,无明确答案,即训练集没有标签。常见的无监督学习算法有聚类(clustering),由计算机自己找出规律,把有相似属性的样本放在一组,每个组也称为簇(cluster)

一、k-means

k-means聚类
setwd("C:/Users/JuinYim/Documents/Personal/Study/6.visualization/homework/homework2")
protein<-read.csv('protein.csv')
view(protein)
protein_pca <- prcomp(protein[2:10], center = FALSE, scale. = FALSE)
protein_x_pca <- mutate(protein, pc1 = protein_pca$x[,1],
                        pc2 = protein_pca$x[,2],
                        pc3 = protein_pca$x[,3])
ggplot(protein_x_pca, aes(pc1, pc2)) +
  geom_point(aes(size = pc3), shape = 21, fill = "green") +
  geom_text(aes(label = Country))
ggscatmat(protein)

PCA及初步探索

install.packages("corrplot")
library(corrplot)
data<-protein[,2:9]
str(protein)
data_scale<-scale(data)  数据标准化
data_cor <- cor(data_scale) 数据相关性探索
corrplot(corr = data_cor, method = 'color', addCoef.col="grey")  
相关性量化表现
数据初步可视化探索

建立任务

task = TaskClust$new("protein", protein[,2:10])
search = ps(centers = p_int(2,15),algorithm = p_fct(levels = c("Hartigan-Wong","Lloyd","MacQueen")))
instance = TuningInstanceSingleCrit$new(
  task = task,
  learner = lrn("clust.kmeans"),
  resampling = rsmp("holdout"),
  measure = msr("clust.db"),
  search_space = search,
  terminator = trm("none"))

调参过程

tuner = tnr("grid_search", resolution = 20)
tuner$optimize(instance)
autoplot(instance)
ggplot(instance$archive$extended_archive, aes(centers, clust.db, color = algorithm)) +
  geom_line()

开始搭建

lrn_kmeans = lrn("clust.kmeans")
lrn_kmeans$param_set$values = list(centers = 3)#6 set by figure above
lrn_kmeans$param_set
lrn_kmeans$train(task)

预测绘图

obj = lrn_kmeans$predict(task)
autoplot(obj, task, type = "pca")
data6pca <- mutate(protein_x_pca , clust = lrn_kmeans$assignments)

ggplot(data6pca, aes(pc1, pc2, color = factor(clust))) +
  geom_text(aes(label = Country, size = pc3)) +
  scale_color_brewer(palette = "Dark2")
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容