支援向量機是幫助我們解決小樣本、非線性及高維資料的重要手段。
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...