日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

【scikit-learn基础】--『监督学习』之 支持向量机回归

發布時間:2024/1/2 windows 34 coder
生活随笔 收集整理的這篇文章主要介紹了 【scikit-learn基础】--『监督学习』之 支持向量机回归 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在機器學習中,支持向量機Support Vector Machine)算法既可以用于回歸問題,也可以用于分類問題。

支持向量機SVM)算法的歷史可以追溯到1963年,當時前蘇聯統計學家弗拉基米爾·瓦普尼克(Vladimir N. Vapnik)和他的同事阿列克謝·切爾沃寧基斯(Alexey Ya. Chervonenkis)提出了支持向量機的概念。然而,由于當時的國際環境影響,他們用俄文發表的論文并沒有受到國際學術界的關注。

直到20世紀90年代,瓦普尼克移民到美國,隨后發表了SVM理論。
在此之后,SVM算法開始受到應有的重視。在1993年和1995年,Corinna Cortes和瓦普尼克提出了SVM的軟間隔分類器,并對其進行了詳細的研究和改進。隨著機器學習領域的快速發展,SVM逐漸成為一種流行的監督學習算法,被廣泛應用于分類回歸問題。

一般來說,支持向量機用于分類問題時,會簡稱 SVC;用于回歸問題時,會簡稱SVR

1. 概述

支持向量機回歸(Support Vector Machine Regression,簡稱SVR)的基本思想是通過構建一個分類器,將輸入數據映射到高維空間中,使得數據在高維空間中更加線性可分,從而得到一個最優的回歸模型。


如上圖所示,SVR的包括:

  1. 模型函數:\(f(x) = w^Tx +b\)
  2. 模型上下邊緣分別為:\(w^T+x+b+\epsilon\)\(w^T+x+b-\epsilon\)

2. 創建樣本數據

這次的回歸樣本數據,我們用 scikit-learn 自帶的玩具數據集中的糖尿病數據集
關于玩具數據集的內容,可以參考:TODO

from sklearn.datasets import load_diabetes

# 糖尿病數據集
diabetes = load_diabetes()
X = diabetes.data
y = diabetes.target

這個數據集中大約有400多條數據。

3. 模型訓練

訓練之前,為了減少算法誤差,先對數據進行標準化處理。

from sklearn import preprocessing as pp

# 數據標準化
X = pp.scale(X)
y = pp.scale(y)

接下來分割訓練集測試集

from sklearn.model_selection import train_test_split

# 分割訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)

然后用scikit-learn中的SVR模型來訓練:

from sklearn.svm import SVR

# 定義支持向量機回歸模型
reg = SVR(kernel='linear')

# 訓練模型
reg.fit(X_train, y_train)

SVR的主要參數包括:

  1. kernel:核函數類型,可以選擇線性('linear')、多項式('poly')、徑向基('rbf')、sigmoid('sigmoid')等。
  2. degree:多項式核函數的度,僅當kernel='poly'時有效。
  3. C:懲罰參數,控制對超出間隔的樣本的懲罰力度。C值越大,對超出間隔的樣本的懲罰力度越大;C值越小,模型越有可能出現過度擬合。
  4. epsilon:定義間隔的容忍度,epsilon越大,間隔越大。
  5. gamma:定義了核函數的系數,gamma越大,核函數的形狀越窄,對數據的影響越小。
  6. tol:定義了優化算法的容忍度,tol越大,算法越容易接受較差的解。
  7. max_iter:定義了優化算法的最大迭代次數。

最后驗證模型的訓練效果:

from sklearn import metrics

# 在測試集上進行預測
y_pred = reg.predict(X_test)

mse, r2, m_error = 0.0, 0.0, 0.0
y_pred = reg.predict(X_test)
mse = metrics.mean_squared_error(y_test, y_pred)
r2 = metrics.r2_score(y_test, y_pred)
m_error = metrics.median_absolute_error(y_test, y_pred)

print("均方誤差:{}".format(mse))
print("復相關系數:{}".format(r2))
print("中位數絕對誤差:{}".format(m_error))

# 運行結果
均方誤差:0.6235345942607318
復相關系數:0.3106068096398569
中位數絕對誤差:0.5861766809598691

從預測的誤差來看,訓練的效果還不錯

4. 總結

SVR算法的應用場景非常廣泛,包括時間序列預測、金融市場分析、自然語言處理、圖像識別等領域。
例如,在時間序列預測中,SVR算法可以用于預測股票價格、房價等連續變量的未來值。
金融市場分析中,SVR算法可以用于預測股票指數的走勢,幫助投資者做出更加明智的投資決策。
自然語言處理中,SVR算法可以用于文本分類和情感分析等任務。
圖像識別中,SVM回歸算法可以用于圖像分割和目標檢測等任務。

總之,SVR算法是一種非常有效的機器學習算法,可以用于解決各種回歸問題。
它的優點包括泛化能力強、能夠處理非線性問題、對數據規模和分布不敏感等。
然而,它的計算復雜度較高,需要使用高效的優化算法進行求解,同時也需要仔細地選擇合適的參數以避免過擬合和欠擬合等問題。

總結

以上是生活随笔為你收集整理的【scikit-learn基础】--『监督学习』之 支持向量机回归的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。