机器学习_SVM学习要点记录

博客提及了任意支撑向量以及核函数,重点提到高斯核函数rbf,这些内容在信息技术领域的机器学习等方面有重要应用。

在这里插入图片描述
在这里插入图片描述

对于任意支撑向量
在这里插入图片描述

在这里插入图片描述

核函数
在这里插入图片描述

高斯核函数rbf
在这里插入图片描述
在这里插入图片描述

将这段代码改进,使之生成KKNN调参结果RMSEcv-k图(需要四种核函数曲线)、SVM调参结果RMSEcv-sigma图(需要不同c值对应曲线至少4个)、ANN调参结果RMSEcv-size图(需要不同decay值对应曲线至少四条)以及输出RF的mtry最优取值,且由于十折交叉验证需要生成四种机器学习算法的RMSEcv、R2cv、MAEcv值,如果可以的话生成拟合出的模型及其参数。library(ggplot2) library(lattice) library(caret) library(Matrix) library(glmnet) library(tidyverse) library(nnet) library(kknn) library(randomForest) library(kernlab) data <- read.csv(“E:/data/Dbaihua.csv”,header = T) 划分训练集和测试集 set.seed(123) trainIndex <- createDataPartition(data$D, p = 0.8, list = FALSE) trainData <- data[trainIndex, ] testData <- data[-trainIndex, ] 人工神经网络(ANN) model_ann <- nnet(D ~ t, data = trainData, size = 5, decay = 0.1) K 近邻(KNN) model_knn <- kknn(D ~ t, train = trainData, test = testData, distance = 2, k = 10) 随机森林(RF) model_rf <- randomForest(D ~ t, data = trainData, ntree = 500, mtry = 1) 支持向量机(SVM) model_svm <- ksvm(D ~ t, data = trainData, C = 10, sigma = 1) 使用 caret 进行 10 折交叉验证 ctrl <- trainControl(method = “cv”, number = 10) 对 ANN 进行交叉验证和调参 tuneGrid_ann <- expand.grid(size = c(2:11), decay = c(0.0001,0.001,0.01, 0.1)) model_ann_tuned <- train(D ~ t, data = trainData, method = “nnet”, trControl = ctrl, tuneGrid = tuneGrid_ann) summary(model_ann_tuned) 对 KNN 进行交叉验证和调参 tuneGrid_knn <- expand.grid(kmax = c(3,10), distance = 2 ,kernel=c(“triangular”,“rectangular”,“epanechnikov”)) model_knn_tuned <- train(D ~ t, data = trainData, method = “kknn”, trControl = ctrl, tuneGrid = tuneGrid_knn) summary(model_knn_tuned) 对 RF 进行交叉验证和调参 tuneGrid_rf <- expand.grid(mtry = 1) model_rf_tuned <- train(D ~ t, data = trainData, method = “rf”, trControl = ctrl, tuneGrid = tuneGrid_rf) summary(model_rf_tuned) 对 SVM 进行交叉验证和调参 tuneGrid_svm <- expand.grid(C = c(0.01,0.1,1,10), sigma = 1) model_svm_tuned <- train(D ~ t, data = trainData, method = “svmRadial”, trControl = ctrl, tuneGrid = tuneGrid_svm) summary(model_svm_tuned) 评估模型性能 rmse_ann <- RMSE(predict(model_ann_tuned, testData), testData$D) rmse_knn <- RMSE(predict(model_knn_tuned, testData), testData$D) rmse_rf <- RMSE(predict(model_rf_tuned, testData), testData$D) rmse_svm <- RMSE(predict(model_svm_tuned, testData), testData$D) 选择最小 RMSEcv 对应的模型作为最终模型 min_rmse <- min(rmse_ann, rmse_knn, rmse_rf, rmse_svm) if (min_rmse == rmse_ann) { final_model <- model_ann_tuned } else if (min_rmse == rmse_knn) { final_model <- model_knn_tuned } else if (min_rmse == rmse_rf) { final_model <- model_rf_tuned } else { final_model <- model_svm_tuned } #计算R2 1-sum(resid(model_rf_tuned)^2)/sum((data[,“D”]-mean(data[,“D”]))^2)
06-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值