R语言基本操作

R语言和Python类似,也是有许许多多的包(Python中是模块)组成,具体用什么就安装什么,用的时候再去加载。

1、安装包:

语法:install.packages("包名")(两个引号""不能省略)

如:下面就是安装强大的绘图包 ggplot2

>install.packages("ggplot2")

2、加载包

语法:library("包名")

>library("ggplot2")

3、查看数据类型

语法:class(变量)(数据框(data.frame)是R语言特有的数据格式)

> class(iris)[1] "data.frame"

4、取数据框中的行和列

语法:<数据框>[行,列](如果取从..行(列)到...行(列),中间用:划分)

还是以iris的数据集为例子。

取第十行:

>iris[10,]

取第一行到第100行

>iris[1:100,]

取第三列:

>iris[,3]

取第一列到第三列:

>iris[,1:3]

如果要连续取多行(列)的话用c来取

iris[c(1:35,50:85,100:135),]

取列:

iris[,c(1:2,4:5)]

5、数据框拼接

按行拼接:

rbind

用法:rbind(data.frame1,data.datafram2,........)

> train_data1=iris[1:5,]> train_data2=iris[7:8,]> rbind(train_data1,train_data2)  Sepal.Length Sepal.Width Petal.Length Petal.Width Species 1          5.1         3.5          1.4         0.2  setosa 2          4.9         3.0          1.4         0.2  setosa 3          4.7         3.2          1.3         0.2  setosa 4          4.6         3.1          1.5         0.2  setosa 5          5.0         3.6          1.4         0.2  setosa 7          4.6         3.4          1.4         0.3  setosa 8          5.0         3.4          1.5         0.2  setosa

按列拼接:

cbind

用法:cbind(data.frame1,data.datafram2,........)

> iris[3:4,]  Sepal.Length Sepal.Width Petal.Length Petal.Width Species 3          4.7         3.2          1.3         0.2  setosa 4          4.6         3.1          1.5         0.2  setosa> iris[100:101,]    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species 100          5.7         2.8          4.1         1.3 versicolor 101          6.3         3.3          6.0         2.5  virginica> train_data1=iris[3:4,1:2]> train_data2=iris[100:101,4:5]> cbind(train_data1,train_data2)  Sepal.Length Sepal.Width Petal.Width    Species 3          4.7         3.2         1.3 versicolor 4          4.6         3.1         2.5  virginica

6、读取列

语法:colnames(数据框)

> colnames(iris) [1] "Sepal.Length" "Sepal.Width"  "Petal.Length" "Petal.Width"  [5] "Species"

     

利用iris的数据来比较随机森林和支持向量机在分类中的作用

#加载支持向量机的包
library("e1071")
#加载随机森林包
library("randomForest")
#加载iris的数据集
data_iris=iris
#得到训练数据集
train_data=data_iris[c(1:35,50:85,100:135),]
#得到测试数据集
test_data=data_iris[c(35:50,85:100,135:150),]
#随机森林测试
rFM=randomForest(Species~.,data=train_data,importance=TRUE)
rfm_result=predict(rFM,test_data[,c(1:4)])
#支持向量机测试
svmmodel=svm(Species ~ ., data =train_data) 
svm_result=predict(svmmodel,test_data[,c(1:4)])
#随机森林比较
a=0
b=1
while(b<=48){
if(rfm_result[b]==test_data[,5][b]){
a=a+1
}else{
a=a
}
b=b+1
}
#随机森林正确率
a/48
#支持向量机比较
j=0
i=1
while(i<=48){
if(svm_result[i]==test_data[,5][i]){
j=j+1
}else{
j=j
}
i=i+1
}
#支持向量机正确率
j/48
结果是:随机森林正确率百分之百,支持向量机是0.979.

出现这个结果应该是数据集太少了吧。目前的目的只是为了完成论文。。。。。

再补充一下神经网络测试的结果,其实神经网络有很多种,我这只是用了B-P网络

#加载神经网络包
library(nnet)

Bpnet=nnet(Species ~ ., data =train_data,size=2)
Bp_result=predict(Bpnet,test_data[,c(1:4)])
Bp_result

直接上结果吧,懒得算了(后面花点时间通过理论基础用Python的panda慢慢实现这些算法吧)

> Bp_result
          setosa   versicolor    virginica
35  1.000000e+00 7.481184e-10 5.595947e-44
36  1.000000e+00 1.248774e-10 3.582008e-45
37  1.000000e+00 1.992972e-11 2.140155e-46
38  1.000000e+00 4.593940e-13 6.554235e-49
39  1.000000e+00 2.348740e-10 9.448506e-45
40  1.000000e+00 2.471622e-11 2.978345e-46
41  1.000000e+00 1.545916e-11 1.448998e-46
42  9.680094e-01 3.199062e-02 2.965489e-32
43  1.000000e+00 1.648575e-11 1.599338e-46
44  1.000000e+00 7.273023e-09 1.838441e-42
45  1.000000e+00 8.497669e-12 5.781500e-47
46  1.000000e+00 1.607075e-08 6.210378e-42
47  1.000000e+00 5.067806e-13 7.620491e-49
48  1.000000e+00 4.112523e-11 6.508645e-46
49  1.000000e+00 1.758152e-12 5.145861e-48
50  1.000000e+00 4.986663e-11 8.749949e-46
85  2.251102e-28 9.995244e-01 4.755853e-04
86  1.310473e-26 9.999835e-01 1.645828e-05
87  4.806073e-28 1.000000e+00 2.431566e-15
88  4.311191e-32 1.000000e+00 3.570460e-13
89  3.812188e-20 1.000000e+00 1.434230e-19
90  8.968888e-27 1.000000e+00 5.074925e-16
91  7.022652e-25 1.000000e+00 1.875919e-16
92  2.333653e-25 1.000000e+00 1.003664e-16
93  5.969981e-25 1.000000e+00 5.361460e-17
94  1.210094e-20 1.000000e+00 2.651115e-19
95  6.501348e-25 1.000000e+00 5.122563e-17
96  6.972046e-19 1.000000e+00 3.025852e-20
97  2.051253e-22 1.000000e+00 2.352390e-18
98  9.442619e-25 1.000000e+00 4.194459e-17
99  4.572157e-19 1.000000e+00 3.792736e-20
100 1.154599e-23 1.000000e+00 1.097799e-17
135 5.640978e-37 1.331397e-01 8.668603e-01
136 8.047240e-47 5.388892e-05 9.999461e-01
137 2.661289e-42 2.027100e-03 9.979729e-01
138 9.442249e-38 7.449624e-02 9.255038e-01
139 4.688098e-36 2.528925e-01 7.471075e-01
140 6.501594e-43 1.240703e-03 9.987593e-01
141 3.137408e-45 1.932932e-04 9.998067e-01
142 2.397452e-44 3.927614e-04 9.996072e-01
143 5.047976e-41 5.642830e-03 9.943572e-01
144 2.368523e-44 3.910996e-04 9.996089e-01
145 7.096319e-45 2.569212e-04 9.997431e-01
146 1.015379e-44 2.911028e-04 9.997089e-01
147 8.183352e-44 6.025461e-04 9.993975e-01
148 2.063806e-41 4.134979e-03 9.958650e-01
149 1.537128e-40 8.305538e-03 9.916945e-01
150 2.535169e-36 2.114082e-01 7.885918e-01

收藏

共0条 1

登录 后发表评论。没有帐号? 注册 一个。

2019-05-01 16:58:05 157 次浏览 0 个评论