RForML之焦点包:e1071
– 有监视进修:在正确功效指导下的进修方法,若是正确功效是定性的,属于分类问题;若正确功效是定量的,属于回归问题。
– 无监视进修:在没有正确功效指导下的进修方法,譬喻:聚类阐明、降维处理惩罚等
有许多R包可以做呆板进修,**本文先容RForML之焦点包:e1071**
![](http://img.shujuren.org/pictures/Y6/585a8ed25a269.png)
### 一、 e1071包简介
e1071包为什么定名e1071,详见:https://www.quora.com/Why-is-the-R-package-e1071-named-so 。
e1071包实现了呆板进修内里的SVM(支持向量机)算法,NB(朴素贝叶斯)算法、恍惚聚类算法、装袋聚类算法等。
### 二、e1071包安装和加载
e1071包是R的扩展包,需要先安装,再加载,才气利用这个包内里函数做呆板进修任务。
安装和加载e1071包的代码
“`r
if(!suppressWarnings(require(e1071)))
{
install.packages(‘e1071’)
require(e1071)
}
“`
###三、e1071包做呆板进修
e1071包做预测,即分类和回归。
#### 1 分类问题
操作SVM算法对UCI的glass数据举办分类
– SVM算法
![](http://img.shujuren.org/pictures/3L/585a9445abe74.png)
– R代码
“`r
##第一步:载入mlbench的Glass数据集
if(!suppressWarnings(require(mlbench)))
{
install.packages(‘mlbench’)
require(mlbench)
}
data(Glass, package="mlbench")
##第二步:数据集分别:练习集和测试集
index <- 1:nrow(Glass)
testindex <- sample(index, trunc(length(index)/3))
testset <- Glass[testindex,]
trainset <- Glass[-testindex,]
##第三步:构建SVM模子
svm.model <- svm(Type ~ ., data = trainset, cost = 100, gamma = 1)
##第四步:SVM模子应用到测试数据集
svm.pred <- predict(svm.model, testset[,-10])
##第五步:模子功效评估
##1夹杂矩阵
table(pred = svm.pred, true = testset[,10])
##2计较Accuracy和Kappa值
classAgreement(table(pred = svm.pred, true = testset[,10]))
“`
#### 2 回归问题
– 回归算法
![](http://img.shujuren.org/pictures/2T/585a9c6e27df0.png)
– R代码
“`r
##第一步:载入mlbench的Ozone数据集
if(!suppressWarnings(require(mlbench)))
{
install.packages(‘mlbench’)
require(mlbench)
}
data(Ozone, package="mlbench")
View(Ozone)
##第二步:数据集分别,练习集和测试集7:3
index <- 1:nrow(Ozone)
testindex <- sample(index, trunc(length(index)/3))
trainset <- na.omit(Ozone[-testindex,-3])##忽略练习集含有缺失值的样本
dim(trainset)
testset <- na.omit(Ozone[testindex,-3]) ##忽略测试集含有缺失值的样本
dim(testset)
##第三步:建设SVM模子
svm.model <- svm(V4 ~ ., data = trainset, cost = 1000, gamma = 0.0001)
##第四步:操作SVM 模子预测方针变量的值
svm.pred <- predict(svm.model, testset[,-3])
##第五步:计较MSE(Mean Squared Error)
crossprod(svm.pred – testset[,3]) / length(testindex)
“`
### 参考资料
1 SVM算法:https://en.wikipedia.org/wiki/Support_vector_machine
2 NB分类器:https://en.wikipedia.org/wiki/Naive_Bayes_classifier
3 回归算法:https://en.wikipedia.org/wiki/Regression_analysis
4 e1071包说明文档:https://cran.r-project.org/web/packages/e1071/