成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何使用支持向量機學習非線性數據集

人工智能 機器學習
什么是支持向量機呢?支持向量機是監督機器學習模型,可對數據進行分類分析。實際上,支持向量機算法是尋找能將實例進行分離的優秀超平面的過程。

 支持向量機(SVM)

[[326874]]

什么是支持向量機呢?支持向量機是監督機器學習模型,可對數據進行分類分析。實際上,支持向量機算法是尋找能將實例進行分離的優秀超平面的過程。

 

如何使用支持向量機學習非線性數據集

 

如果數據像上面那樣是線性可分離的,那么我們用一個線性分類器就能將兩個類分開。如果我們的數據是非線性可分的,我們應該怎么做呢?就像這樣:

 

如何使用支持向量機學習非線性數據集

 

正如我們所看到的,即使來自不同類的數據點是可分離的,我們也不能簡單地畫一條直線來進行分類。

 

如何使用支持向量機學習非線性數據集

 

那么我們如何使用支持向量機來擬合非線性機器學習數據集呢?

使用SVM進行實驗

創建機器學習數據集

首先創建非線性機器學習數據集。Python代碼如下:

 

  1. # Import packages to visualize the classifer 
  2. from matplotlib.colors import ListedColormap 
  3. import matplotlib.pyplot as plt 
  4. import warnings 
  5.  
  6. # Import packages to do the classifying 
  7. import numpy as np 
  8. from sklearn.svm import SVC 
  9.  
  10. Create Dataset 
  11. np.random.seed(0) 
  12. X_xor = np.random.randn(200, 2) 
  13. y_xor = np.logical_xor(X_xor[:, 0] > 0, 
  14.                        X_xor[:, 1] > 0) 
  15. y_xor = np.where(y_xor, 1, -1) 
  16.  
  17. fig = plt.figure(figsize=(10,10)) 
  18. plt.scatter(X_xor[y_xor == 1, 0], 
  19.             X_xor[y_xor == 1, 1], 
  20.             c='b', marker='x'
  21.             label='1'
  22. plt.scatter(X_xor[y_xor == -1, 0], 
  23.             X_xor[y_xor == -1, 1], 
  24.             c='r'
  25.             marker='s'
  26.             label='-1'
  27.  
  28. plt.xlim([-3, 3]) 
  29. plt.ylim([-3, 3]) 
  30. plt.legend(loc='best'
  31. plt.tight_layout() 
  32. plt.show() 

 

如何使用支持向量機學習非線性數據集

 

 

嘗試使用線性支持向量機

我們首先嘗試使用線性支持向量機,Python實現如下:

 

  1. # Import packages to do the classifying 
  2. from mlxtend.plotting import plot_decision_regions 
  3. import numpy as np 
  4. from sklearn.svm import SVC 
  5.  
  6. Create a SVC classifier using a linear kernel 
  7. svm = SVC(kernel='linear', C=1000, random_state=0) 
  8. # Train the classifier 
  9. svm.fit(X_xor, y_xor) 
  10.  
  11. # Visualize the decision boundaries 
  12. fig = plt.figure(figsize=(10,10)) 
  13. plot_decision_regions(X_xor, y_xor, clf=svm) 
  14. plt.legend(loc='upper left'
  15. plt.tight_layout() 
  16. plt.show() 

C是與錯誤分類相關的成本。C值越高,算法對數據集的正確分離就越嚴格。對于線性分類器,我們使用kernel='linear'。

 

如何使用支持向量機學習非線性數據集

 

如我們所見,即使我們將成本設置得很高,但這條線也無法很好地分離紅點和藍點。

徑向基函數核

到目前為止,我們使用的線性分類器為:

 

如何使用支持向量機學習非線性數據集

 

正如我們所看到的,g(x)是一個線性函數。當g(x) >為0時,預測值為1。當g(x) <0時,預測值為-1。但是由于我們不能使用線性函數處理像上面這樣的非線性數據,我們需要將線性函數轉換成另一個函數。

 

如何使用支持向量機學習非線性數據集

 

這個分類器似乎是我們非線性數據的理想選擇。讓我們來看看Python的代碼:

 

  1. Create a SVC classifier using an RBF kernel 
  2. svm = SVC(kernel='rbf', random_state=0, gamma=1/100, C=1) 
  3. # Train the classifier 
  4. svm.fit(X_xor, y_xor) 
  5.  
  6. # Visualize the decision boundaries 
  7. fig = plt.figure(figsize=(10,10)) 
  8. plot_decision_regions(X_xor, y_xor, clf=svm) 
  9. plt.legend(loc='upper left'
  10. plt.tight_layout() 
  11. plt.show() 

gamma是1 / sigma。請記住,sigma是調節函數。因此,gamma值越小,sigma值就越大,分類器對各個點之間的距離就越不敏感。

 

如何使用支持向量機學習非線性數據集

 

讓我們把伽瑪放大看看會發生什么

 

  1. Create a SVC classifier using an RBF kernel 
  2. svm = SVC(kernel='rbf', random_state=0, gamma=1, C=1) 
  3. # Train the classifier 
  4. svm.fit(X_xor, y_xor) 
  5.  
  6. # Visualize the decision boundaries 
  7. fig = plt.figure(figsize=(10,10)) 
  8. plot_decision_regions(X_xor, y_xor, clf=svm) 
  9. plt.legend(loc='upper left'
  10. plt.tight_layout() 
  11. plt.show() 

 

如何使用支持向量機學習非線性數據集

 

 

好像將伽瑪值提高100倍可以提高分類器對訓練集的準確性。把伽馬值再乘以10會怎么樣呢?

 

  1. Create a SVC classifier using an RBF kernel 
  2. svm = SVC(kernel='rbf', random_state=0, gamma=10, C=1) 
  3. # Train the classifier 
  4. svm.fit(X_xor, y_xor) 
  5.  
  6. # Visualize the decision boundaries 
  7. fig = plt.figure(figsize=(10,10)) 
  8. plot_decision_regions(X_xor, y_xor, clf=svm) 
  9. plt.legend(loc='upper left'
  10. plt.tight_layout() 
  11. plt.show() 

 

如何使用支持向量機學習非線性數據集

 

 

這是否意味著如果我們將伽瑪提高到10000,它將更加準確呢?事實上,如果伽瑪值太大,則分類器最終會對差異不敏感。

 

如何使用支持向量機學習非線性數據集

 

讓我們增加C。C是與整個機器學習數據集的錯誤分類相關的成本。換句話說,增加C將增加對整個數據集的敏感性,而不僅僅是單個數據點。

 

  1. from ipywidgets import interact, interactive, fixed, interact_manual 
  2. import ipywidgets as widgets 
  3.  
  4. warnings.filterwarnings("ignore"
  5.  
  6. @interact(x=[1, 10, 1000, 10000, 100000]) 
  7. def svc(x=1): 
  8.   # Create a SVC classifier using an RBF kernel 
  9.   svm = SVC(kernel='rbf', random_state=0, gamma=.01, C=x) 
  10.   # Train the classifier 
  11.   svm.fit(X_xor, y_xor) 
  12.  
  13.   # Visualize the decision boundaries 
  14.   fig = plt.figure(figsize=(10,10)) 
  15.   plot_decision_regions(X_xor, y_xor, clf=svm) 
  16.   plt.legend(loc='upper left'
  17.   plt.tight_layout() 
  18.   plt.show() 

 

如何使用支持向量機學習非線性數據集

 

 

我們已經找到了參數,因此我們的SVM分類器可以成功地將兩組點分開。

最后

我希望本文能讓您對SVM分類器是什么以及如何使用它來學習非線機器學習性數據集有一個直觀的認識。如果數據是高維的,您則無法通過可視化來判斷分類器的性能。好的做法是根據訓練集進行訓練,并在測試集上使用混淆矩陣或f1-分數等指標。

責任編輯:華軒 來源: 今日頭條
相關推薦

2015-10-23 10:23:26

大數據向量機

2017-02-07 14:40:52

2014-07-08 10:31:08

機器學習

2022-07-22 08:00:00

深度學習數據機器學習

2023-09-04 12:58:35

數據模型

2021-08-17 10:29:16

人工智能AIDevOps

2022-04-18 09:00:00

數據庫向量機器學習

2024-02-19 14:37:14

機器學習非線性降維

2020-06-24 07:53:03

機器學習技術人工智能

2017-10-08 15:04:57

支持向量機機器學習核函數

2023-11-15 19:17:58

騰訊云向量數據庫

2024-10-12 17:13:53

2023-07-28 08:00:00

人工智能向量數據庫

2017-05-17 08:24:08

TensorFlow機器學習線性回歸

2024-11-21 08:00:00

向量搜索人工智能

2023-01-05 08:00:00

2017-10-09 11:21:46

神經網絡OpenAI非線性

2021-05-14 08:58:18

非線性安全Go

2015-03-04 10:06:20

光纖OFDM信號
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级片免费网站 | 国产一区二区三区四 | 久久久.com | 日韩国产一区二区 | 99视频免费在线 | 国产成人精品一区二区三 | www.黄色片视频 | 国产一级视频在线观看 | 91精品国产综合久久久久 | 精品一区二区三区在线视频 | 亚洲视频免费在线观看 | 精品美女在线观看视频在线观看 | 亚洲精品久久久久久首妖 | 特级黄一级播放 | 亚洲激情网站 | 一区二区三区视频在线 | h视频在线免费观看 | 国产99在线 | 欧美 | 成人高清在线视频 | 国产精品久久久久久久久久三级 | av资源网站| 国产在线一区二区 | 久热中文字幕 | 久久久久久久久久一区 | 成人在线一级片 | 欧美精品一区二区在线观看 | 亚洲人成人一区二区在线观看 | 香蕉超碰 | 欧美日韩中 | 国产一级一级毛片 | 日韩视频一区二区 | 一区二区在线免费观看 | 色男人天堂av | 91色在线视频 | 一区二区在线不卡 | 久久亚洲春色中文字幕久久久 | 99视频在线免费观看 | 中文在线播放 | 91就要激情 | 日韩精品视频在线 | 精品久久99 |