r语言 svm 大样本_R语言——支持向量机结果可视化

支持向量机(Support Vector Machine,SVM)是一种有监督的学习模型(也可用于无监督学习),常用于数据的分类和回归问题。针对二分类问题,每个训练样本被标记为属于两个类别中的某一类,SVM分类算法是想要训练出一个最好高维空间分隔超平面,将新的样品分配给两个类别之一的模型,所以SVM可看作是非概率二元线性分类器。

1 SVM分类的相关可视化

本小节将会使用种子数据集,利用支持向量机算法建立一个分类模型,并且在模型的建立与分析过程中,使用相关可视化方法对结果进行分析,更好的理解支持向量机的应用情况,首先导入相关包和数据:

library(e1071);library(ggplot2);library(RColorBrewer)

##读取种子数据

myseeddf

myseeddf$label

head(myseeddf)

## x1 x2 x3 x4 x5 x6 x7 label

## 1 15.26 14.84 0.8710 5.763 3.312 2.221 5.220 1

## 2 14.88 14.57 0.8811 5.554 3.333 1.018 4.956 1

## 3 14.29 14.09 0.9050 5.291 3.337 2.699 4.825 1

## 4 13.84 13.94 0.8955 5.324 3.379 2.259 4.805 1

## 5 16.14 14.99 0.9034 5.658 3.562 1.355 5.175 1

## 6 14.38 14.21 0.8951 5.386 3.312 2.462 4.956 1

## 获取种子数据的前两个主成分

pcaseed

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于R语言的自编码器(autoencoder)可视化图像的方法,可以通过以下步骤进行: 1. 导入必要的库和数据集,比如MNIST手写数字数据集。 ```R library(keras) library(ggplot2) library(gridExtra) mnist <- dataset_mnist() x_train <- mnist$train$x y_train <- mnist$train$y x_test <- mnist$test$x y_test <- mnist$test$y ``` 2. 对图像进行预处理,将像素值归一化到0-1之间。 ```R x_train <- x_train / 255 x_test <- x_test / 255 ``` 3. 构建自编码器模型,使用Keras库实现。 ```R input_img <- layer_input(shape = c(784)) encoded <- input_img %>% layer_dense(units = 128, activation = "relu") %>% layer_dense(units = 64, activation = "relu") %>% layer_dense(units = 32, activation = "relu") decoded <- encoded %>% layer_dense(units = 64, activation = "relu") %>% layer_dense(units = 128, activation = "relu") %>% layer_dense(units = 784, activation = "sigmoid") autoencoder <- keras_model(inputs = input_img, outputs = decoded) ``` 4. 训练自编码器模型,并使用测试集对其进行评估。 ```R autoencoder %>% compile(optimizer = 'adam', loss = 'binary_crossentropy') autoencoder %>% fit(x_train, x_train, epochs = 50, batch_size = 256, shuffle = TRUE, validation_data = list(x_test, x_test)) decoded_imgs <- predict(autoencoder, x_test) ``` 5. 可视化原始图像和重构图像,对比两者的差异。 ```R n <- 10 original <- x_test[1:n, ] reconstructed <- decoded_imgs[1:n, ] original_m <- matrix(original, ncol = 28, byrow = TRUE) reconstructed_m <- matrix(reconstructed, ncol = 28, byrow = TRUE) original_gg <- ggplot() + geom_raster(aes(x = 1:28, y = 1:28, fill = original_m)) + scale_fill_gradient(low = "white", high = "black") reconstructed_gg <- ggplot() + geom_raster(aes(x = 1:28, y = 1:28, fill = reconstructed_m)) + scale_fill_gradient(low = "white", high = "black") grid.arrange(original_gg, reconstructed_gg, ncol = 2) ``` 以下是支持向量机SVM)结果可视化的方法: 1. 导入必要的库和数据集,比如Iris鸢尾花数据集。 ```R library(e1071) library(ggplot2) iris <- datasets::iris() ``` 2. 对数据集进行预处理,将类别变量转化为数值变量,并将数据集分为训练集和测试集。 ```R iris$Species <- as.numeric(iris$Species) set.seed(123) train_index <- sample(1:nrow(iris), 100) train_data <- iris[train_index, ] test_data <- iris[-train_index, ] ``` 3. 构建SVM模型,并对其进行训练和测试。 ```R svm_model <- svm(Species ~ ., data = train_data, kernel = "linear", cost = 1) svm_pred <- predict(svm_model, test_data[-4]) svm_acc <- sum(svm_pred == test_data[, 5]) / nrow(test_data) * 100 ``` 4. 可视化SVM结果,使用ggplot2库绘制分类边界和数据点。 ```R svm_plot <- ggplot(train_data, aes(x = Sepal.Length, y = Petal.Length, color = factor(Species))) + geom_point(size = 3) + geom_smooth(method = "svm", formula = y ~ x, data = train_data, size = 1) + scale_color_discrete(name = "Species") + ggtitle(paste0("SVM Accuracy: ", svm_acc, "%")) svm_plot ``` 绘制的图像中,不同颜色的点表示不同类别的数据点,分类边界用实线表示。我们可以通过调整SVM模型的参数和选择不同的kernel,来获得更好的分类效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值