支援向量機 R語言如何實現支援向量機?

2021-10-14 17:48:07 字數 2097 閱讀 4425

支援向量機是幫助我們解決小樣本、非線性及高維資料的重要手段。

1在r語言中,實現支援向量機的是e1071軟體包中的svm函式。

首先,安裝並載入軟體包。

2讀取資料集。

gyyz_data=read.csv("gyyz.csv",head=t)#讀取資料集

gyyz_data$is_rise=as.factor(gyyz_data$is_rise)#將目標變數轉換成分類資料

head(gyyz_data);dim(gyyz_data)#檢視資料維度

str(gyyz_data)#檢視資料集中各變數的屬性

3建立向量機的主要函式是svm(),該函式可以用來建立一般情況下的回歸模型,也可以用來建立分類模型、密度估計模型。

svm()函式主要有以下兩種形式:

第一種:

svm(formula, data = null, ..., subset, na.action =

na.omit, scale = true)

第二種:

svm(x, y = null, scale = true, type = null, kernel =

"radial", degree = 3, gamma = if (is.vector(x)) 1 else 1 / ncol(x),

coef0 = 0, cost = 1, nu = 0.5,class.weights = null, cachesize = 40, tolerance = 0.001, epsilon = 0.1,

shrinking = true, cross = 0, probability = false, fitted = true,

..., subset, na.action = na.omit)

其中,第一種函式形式的formula表示公式,一般為y~x1+x2或y~.的形式,data代表資料集。第二種函式形式中的x表示乙個特徵變數資料集,y表示目標變數;type表示建立模型的類別,主要有c-classification、nu-classification、one-classification(邏輯判別)、eps-regression、nu-regression;kernel表示核函式,主要有線性函式、基核函式、多項式函式、神經網路函式,識別率最高和效能最好的函式是徑向基核函式。svm()函式的輸出結果中主要包含:sv,即支援向量機;index表示支援向量樣本資料的第幾個樣本。

建立模型的**如下:

svm_model=svm(is_rise~.,data=gyyz_data,knernel="radial") #建立svm模型

summary(svm_model)#檢視模型輸出結果

從結果中可以看出,該模型有48個支援向量,0類和1類分別有24個支援向量。

4利用建立好的模型進行**。

svm_pred=predict(svm_model,gyyz_data)

gyyz_data$svm_pred=svm_pred#將**結果儲存到資料集

head(gyyz_data)#檢視**結果

#檢視**效果

table(gyyz_data$is_rise,gyyz_data$svm_pred)#真實值與**值混淆矩陣

在實際應用中,通過調整函式形式可以優化模型。

R語言 支援向量機

支援向量機可以想象成乙個平面,改平面定義了個資料點之間的界限,而這些資料點代表它們的特徵繪製多維空間中的樣本。支援向量機的目標是建立乙個稱為超平面的平面邊界,它使得任何乙個的資料劃分都是相當均勻的。支援向量機幾乎可以適用於所有的學習任務,包括分類 svm 數值 回歸 svr r 實現及引數說明 1 ...

R 支援向量機

支援向量機是乙個相對較新和較先進的機器學習技術,最初提出是為了解決二類分類問題,現在被廣泛用於解決多類非線性分類問題和回歸問題。其流行歸功於兩個方面,乙個方面,可以輸出比較準確的 結果 另一方面,模型基於比較優雅的數學理論。svm旨在在多維空間找到乙個能將全部樣本單元分成兩類的最優平面,這一平面應使...

R語言調整支援向量機

說明 除了選擇不同的特徵集和核函式,還可以借助引數gamma以及懲罰因子來調整支援向量機的效能,可以寫乙個for函式來實現。svm提供了tune.svm函式簡化了這個過程。操作準備好訓練資料集trainset 使用tune.svm調整支援向量機 tuned tune.svm churn data t...