R語言和Python相似,也是有許許多多的包(Python中是模塊)組成,具體用什麼就安裝什麼,用的時候再去加載。算法
一、安裝包:shell
語法:install.packages("包名")(兩個引號""不能省略)網絡
如:下面就是安裝強大的繪圖包 ggplot2
dom
>install.packages("ggplot2")
二、加載包測試
語法:library("包名")
rest
>library("ggplot2")
三、查看數據類型code
語法:class(變量)(數據框(data.frame)是R語言特有的數據格式)ci
> class(iris) [1] "data.frame"
四、取數據框中的行和列class
語法:<數據框>[行,列](若是取從..行(列)到...行(列),中間用:劃分)test
仍是以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)]
五、數據框拼接
按行拼接:
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
六、讀取列
語法: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 virginica35 1.000000e+00 7.481184e-10 5.595947e-4436 1.000000e+00 1.248774e-10 3.582008e-4537 1.000000e+00 1.992972e-11 2.140155e-4638 1.000000e+00 4.593940e-13 6.554235e-4939 1.000000e+00 2.348740e-10 9.448506e-4540 1.000000e+00 2.471622e-11 2.978345e-4641 1.000000e+00 1.545916e-11 1.448998e-4642 9.680094e-01 3.199062e-02 2.965489e-3243 1.000000e+00 1.648575e-11 1.599338e-4644 1.000000e+00 7.273023e-09 1.838441e-4245 1.000000e+00 8.497669e-12 5.781500e-4746 1.000000e+00 1.607075e-08 6.210378e-4247 1.000000e+00 5.067806e-13 7.620491e-4948 1.000000e+00 4.112523e-11 6.508645e-4649 1.000000e+00 1.758152e-12 5.145861e-4850 1.000000e+00 4.986663e-11 8.749949e-4685 2.251102e-28 9.995244e-01 4.755853e-0486 1.310473e-26 9.999835e-01 1.645828e-0587 4.806073e-28 1.000000e+00 2.431566e-1588 4.311191e-32 1.000000e+00 3.570460e-1389 3.812188e-20 1.000000e+00 1.434230e-1990 8.968888e-27 1.000000e+00 5.074925e-1691 7.022652e-25 1.000000e+00 1.875919e-1692 2.333653e-25 1.000000e+00 1.003664e-1693 5.969981e-25 1.000000e+00 5.361460e-1794 1.210094e-20 1.000000e+00 2.651115e-1995 6.501348e-25 1.000000e+00 5.122563e-1796 6.972046e-19 1.000000e+00 3.025852e-2097 2.051253e-22 1.000000e+00 2.352390e-1898 9.442619e-25 1.000000e+00 4.194459e-1799 4.572157e-19 1.000000e+00 3.792736e-20100 1.154599e-23 1.000000e+00 1.097799e-17135 5.640978e-37 1.331397e-01 8.668603e-01136 8.047240e-47 5.388892e-05 9.999461e-01137 2.661289e-42 2.027100e-03 9.979729e-01138 9.442249e-38 7.449624e-02 9.255038e-01139 4.688098e-36 2.528925e-01 7.471075e-01140 6.501594e-43 1.240703e-03 9.987593e-01141 3.137408e-45 1.932932e-04 9.998067e-01142 2.397452e-44 3.927614e-04 9.996072e-01143 5.047976e-41 5.642830e-03 9.943572e-01144 2.368523e-44 3.910996e-04 9.996089e-01145 7.096319e-45 2.569212e-04 9.997431e-01146 1.015379e-44 2.911028e-04 9.997089e-01147 8.183352e-44 6.025461e-04 9.993975e-01148 2.063806e-41 4.134979e-03 9.958650e-01149 1.537128e-40 8.305538e-03 9.916945e-01150 2.535169e-36 2.114082e-01 7.885918e-01