欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
svm,一個(gè)強大算法 詳細總結??!

核心點(diǎn):關(guān)于svm的介紹,以及代碼示例!

哈嘍,我是cos大壯!

記得最初學(xué)習SVM的時(shí)候,既有激動(dòng)又有崇拜,也不知道為什么?總是和開(kāi)始學(xué)習的回歸、聚類(lèi)不太一樣。

在這之前咱們已經(jīng)接觸了 各個(gè)算法的優(yōu)缺點(diǎn)的總結,以及8個(gè)回歸類(lèi)算法、7個(gè)正則化算法的總結、5 個(gè)集成算法模型的全部總結!

感興趣的可以翻到之前看看~

咱們今天就大概一起學(xué)習一下關(guān)于SVM的方方面面。

  • 線(xiàn)性支持向量機
  • 非線(xiàn)性支持向量機
  • 多類(lèi)別支持向量機
  • 核函數支持向量機
  • 稀疏支持向量機
  • 核貝葉斯支持向量機
  • 不平衡類(lèi)別支持向量機

先來(lái)啰嗦幾點(diǎn)關(guān)于 SVM 的優(yōu)勢和劣勢!

優(yōu)勢:

1、適用性廣泛:SVM支持向量機在解決分類(lèi)和回歸問(wèn)題上表現出色,可應用于各種數據類(lèi)型和領(lǐng)域,例如文本分類(lèi)、圖像識別和生物信息學(xué)等。

2、魯棒性強:SVM支持向量機對于訓練數據中的噪聲和異常點(diǎn)具有一定的魯棒性,可以有效地處理輸入數據中的噪聲。

3、可避免陷入局部最優(yōu)解:由于SVM支持向量機使用了結構風(fēng)險最小化原則,它能夠更好地避免陷入局部最優(yōu)解,并且具有較低的泛化誤差。

4、高維空間有效:SVM支持向量機通過(guò)核技巧將低維空間的非線(xiàn)性問(wèn)題映射到高維空間,在高維空間中進(jìn)行線(xiàn)性劃分,從而有效地解決了復雜的非線(xiàn)性問(wèn)題。

5、可控制的過(guò)擬合:SVM支持向量機通過(guò)調整正則化參數和松弛變量來(lái)控制模型的復雜度,從而可以有效地避免過(guò)擬合問(wèn)題。

劣勢:

1、計算復雜度高:SVM支持向量機在大規模數據集上的訓練時(shí)間較長(cháng),特別是對于非線(xiàn)性問(wèn)題和核函數的使用。

2、參數選擇敏感:SVM支持向量機中的參數調優(yōu)過(guò)程通常需要進(jìn)行交叉驗證,對于不同的問(wèn)題和數據集,選擇合適的參數可能會(huì )比較困難。

3、對缺失數據敏感:SVM支持向量機對于含有大量缺失數據的情況可能表現不佳,需要在預處理階段進(jìn)行適當的處理。

4、適用于二分類(lèi)問(wèn)題:原始的SVM支持向量機算法只能解決二分類(lèi)問(wèn)題,對于多類(lèi)別問(wèn)題需要進(jìn)行擴展或使用其他方法。

盡管SVM支持向量機存在一些劣勢,但其優(yōu)勢使得它成為了數據分析和機器學(xué)習領(lǐng)域中一個(gè)重要的算法之一。

在實(shí)際工作中,我們可以根據具體問(wèn)題的特點(diǎn)和需求來(lái)選擇合適的分類(lèi)算法。

大家伙如果覺(jué)得還不錯!可以點(diǎn)贊、轉發(fā)安排起來(lái),讓更多的朋友看到。

ok,咱們一起來(lái)學(xué)習一下~

線(xiàn)性支持向量機

線(xiàn)性支持向量機是一種用于解決分類(lèi)問(wèn)題的機器學(xué)習算法。

它的目標是找到一個(gè)能夠在數據中畫(huà)出一條直線(xiàn)(或者高維空間中的超平面),將不同類(lèi)別的數據點(diǎn)分隔開(kāi),并且最大化兩側最靠近這條線(xiàn)的數據點(diǎn)之間的距離。

這兩側最靠近線(xiàn)的數據點(diǎn)被稱(chēng)為支持向量。

線(xiàn)性SVM在以下情況下非常有用:

  • 二分類(lèi)問(wèn)題,即將數據分為兩個(gè)類(lèi)別。
  • 當數據可以被線(xiàn)性分割時(shí),即存在一條直線(xiàn)可以很好地將兩個(gè)類(lèi)別分開(kāi)。
  • 當需要一個(gè)高度可解釋的模型,因為SVM的決策邊界是直線(xiàn)或超平面,非常容易可視化和解釋。

線(xiàn)性SVM的決策函數可以表示為:

其中, 是預測的類(lèi)別, 是權重向量, 是輸入特征向量, 是偏置(或截距), 表示向量的點(diǎn)積。決策函數的目標是使支持向量到?jīng)Q策邊界的距離最大化,這個(gè)距離稱(chēng)為間隔。

我們創(chuàng )建一個(gè)簡(jiǎn)單的線(xiàn)性SVM模型,大家可以直接運行起來(lái):

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm

# 生成一些隨機數據
X, y = datasets.make_classification(n_samples=100, n_features=2, n_classes=2, n_clusters_per_class=1, n_redundant=0)

# 創(chuàng )建SVM模型
clf = svm.SVC(kernel='linear')
clf.fit(X, y)

# 繪制數據點(diǎn)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)

# 繪制決策邊界
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()

# 創(chuàng )建網(wǎng)格來(lái)評估模型
xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 50), np.linspace(ylim[0], ylim[1], 50))
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

# 繪制決策邊界和間隔
plt.contour(xx, yy, Z, colors='k', levels=[-101], alpha=0.5, linestyles=['--''-''--'])
plt.show()

其中包括數據點(diǎn)、決策邊界和間隔。

非線(xiàn)性支持向量機

非線(xiàn)性支持向量機的神奇之處在于,它可以幫助我們把不同形狀的數據分開(kāi),像拼圖一樣。

有時(shí),我們不能僅僅用一條直線(xiàn)分開(kāi)這些數據,所以我們需要一些特殊的技巧,這就是非線(xiàn)性SVM的用武之地。

非線(xiàn)性SVM在很多情況下都非常有用,比如:

  • 當數據不是線(xiàn)性分布的,也就是說(shuō),不能只用一條直線(xiàn)把它們分開(kāi)。
  • 當我們需要解決更復雜的問(wèn)題,如圖像識別或自然語(yǔ)言處理,這些問(wèn)題通常不適合線(xiàn)性方法。
  • 當我們希望用一種更復雜的方式來(lái)分隔數據,以獲取更好的結果。

另外,非線(xiàn)性SVM的數學(xué)公式比較復雜,但我們可以簡(jiǎn)化為:它是一種方法,可以將數據映射到一個(gè)不同的空間,然后在那個(gè)空間中使用線(xiàn)性SVM。這個(gè)映射是通過(guò)一個(gè)叫做核函數來(lái)完成的。這個(gè)核函數通常表示為,它將原始數據映射到一個(gè)新的空間。

下面是一個(gè)使用非線(xiàn)性SVM的Python案例,以幫助理解。

我們將使用支持向量機庫svm中的SVC類(lèi),并使用徑向基函數(RBF)核。

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn import svm

# 創(chuàng )建一些具有非線(xiàn)性特征的數據
X, y = datasets.make_circles(n_samples=100, factor=0.5, noise=0.1)

# 創(chuàng )建非線(xiàn)性SVM模型
clf = svm.SVC(kernel='rbf')
clf.fit(X, y)

# 繪制數據點(diǎn)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)

# 繪制決策邊界
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()

# 創(chuàng )建網(wǎng)格來(lái)評估模型
xx, yy = np.meshgrid(np.linspace(xlim[0], xlim[1], 50), np.linspace(ylim[0], ylim[1], 50))
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

# 繪制決策邊界和間隔
plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8)
plt.show()

上面代碼,展示了使用非線(xiàn)性SVM將非線(xiàn)性數據分隔開(kāi)。



多類(lèi)別支持向量機

多類(lèi)別支持向量機可以應用于許多實(shí)際問(wèn)題中。

比如,當我們有很多動(dòng)物的照片,我們想知道每個(gè)動(dòng)物的種類(lèi);或者當我們有很多水果的特征數據,我們想根據這些特征將水果分類(lèi)。

我們可以用一些數學(xué)公式來(lái)描述多類(lèi)別支持向量機。假設我們有n個(gè)數據點(diǎn),每個(gè)數據點(diǎn)有兩個(gè)特征,分別用x和y表示。我們還有k個(gè)類(lèi)別,用1到k的數字表示。

多類(lèi)別支持向量機的目標是找到一條線(xiàn)(或曲線(xiàn)),可以將不同類(lèi)別的點(diǎn)分開(kāi)。我們可以使用以下公式表示多類(lèi)別支持向量機的決策規則:

對于每個(gè)類(lèi)別i(從):

如果 ,則數據點(diǎn)屬于類(lèi)別;否則,數據點(diǎn)不屬于類(lèi)別。

其中是用來(lái)控制決策邊界的參數。

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
import matplotlib.pyplot as plt

# 加載數據集(這里使用鳶尾花數據集作為示例)
iris = datasets.load_iris()
X = iris.data[:, :2]  # 只選取前兩個(gè)特征
y = iris.target

# 將數據集拆分為訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 創(chuàng )建多類(lèi)別支持向量機模型,選擇線(xiàn)性核函數
svm = SVC(kernel='linear')
svm.fit(X_train, y_train)

# 預測測試集中的類(lèi)別
y_pred = svm.predict(X_test)

# 繪制決策邊界和樣本點(diǎn)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Set1)
plt.xlabel('Sepal length')
plt.ylabel('Sepal width')

# 繪制支持向量
support_vectors = svm.support_vectors_
plt.scatter(support_vectors[:, 0], support_vectors[:, 1], s=100, facecolors='none', edgecolors='k')

# 繪制特殊點(diǎn)
special_points = [[5.93.0], [6.22.8]]
plt.scatter([point[0for point in special_points], [point[1for point in special_points], color='red', marker='x')

# 繪制決策邊界
xlim = plt.gca().get_xlim()
ylim = plt.gca().get_ylim()
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = svm.decision_function(xy).reshape(XX.shape)
plt.contour(XX, YY, Z, colors='k', levels=[-101], alpha=0.5, linestyles=['--''-''--'])

plt.show()

圖中的點(diǎn)代表不同類(lèi)型的花,顏色不同表示不同的類(lèi)別。

核函數支持向量機

核函數支持向量機使用場(chǎng)景很多,比如在圖像識別、文本分類(lèi)和生物信息學(xué)等領(lǐng)域都有應用。

核函數支持向量機的公式表達如下:

給定一個(gè)訓練集 ,其中  是輸入特征向量, 是對應的類(lèi)別標簽。核函數支持向量機的目標是找到一個(gè)超平面,將不同類(lèi)別的樣本分隔開(kāi)來(lái)。

公式表示為:

其中, 是核函數,它的作用是將輸入特征映射到高維空間。   是模型參數,通過(guò)訓練得到。

咱們再來(lái)舉一個(gè)例子:

from sklearn import svm
import matplotlib.pyplot as plt
import numpy as np

# 生成樣本數據
X = np.array([[12], [34], [56], [78]])
y = np.array([0011])

# 創(chuàng )建核函數支持向量機模型
model = svm.SVC(kernel='rbf')

# 擬合數據
model.fit(X, y)

# 繪制決策邊界
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()

# 創(chuàng )建網(wǎng)格來(lái)評估模型
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = model.decision_function(xy).reshape(XX.shape)

# 繪制決策邊界和支持向量
ax.contour(XX, YY, Z, colors='k', levels=[-101], alpha=0.5,
           linestyles=['--''-''--'])
ax.scatter(model.support_vectors_[:, 0], model.support_vectors_[:, 1],
           s=100, facecolors='none', edgecolors='k')

plt.show()

上述代碼首先使用樣本數據訓練一個(gè)核函數支持向量機模型,然后通過(guò)繪制決策邊界和支持向量的方式可視化分類(lèi)結果。決策邊界是用實(shí)線(xiàn)表示的,支持向量是用空心圓點(diǎn)表示的。

稀疏支持向量機

當我們使用稀疏支持向量機來(lái)解決一個(gè)分類(lèi)問(wèn)題時(shí),我們希望找到一個(gè)超平面,能夠將不同類(lèi)別的數據點(diǎn)有效地分開(kāi)。

稀疏支持向量機通常用于處理大規模數據集或高維特征的分類(lèi)問(wèn)題。例如,在醫學(xué)圖像識別中,當需要處理數百萬(wàn)個(gè)像素的圖像數據時(shí),稀疏支持向量機可以高效地分類(lèi);在自然語(yǔ)言處理中,當需要處理大量文本特征時(shí),該算法也能發(fā)揮作用。

給定訓練數據集 ,其中  是輸入特征向量, 是對應的類(lèi)別標簽。

稀疏支持向量機的目標是找到一個(gè)超平面,使得盡可能多的訓練數據點(diǎn)離該超平面的距離最大化。

公式表示為:

其中, 是關(guān)于訓練數據點(diǎn)的權重系數, 是對應數據點(diǎn)的類(lèi)別(1代表正類(lèi),-1代表負類(lèi)), 是核函數,用于計算數據點(diǎn)之間的相似度。

舉一個(gè)關(guān)于稀疏支持向量機的例子,大家只要安裝了相應的包即可直接運行起來(lái):

from sklearn import svm
import matplotlib.pyplot as plt
import numpy as np

# 生成樣本數據
X = np.array([[12], [34], [56], [78]])
y = np.array([0011])

# 創(chuàng )建稀疏支持向量機模型
model = svm.SVC(kernel='linear')

# 擬合數據
model.fit(X, y)

# 繪制數據點(diǎn)
plt.scatter(X[:, 0], X[:, 1], c=y, cmap='viridis')

# 繪制超平面
w = model.coef_[0]
b = model.intercept_[0]
x_min, x_max = plt.xlim()
y_min, y_max = plt.ylim()
xx = np.linspace(x_min, x_max)
yy = -(w[0] * xx + b) / w[1]
plt.plot(xx, yy, 'k-')

# 繪制支持向量
support_vectors = model.support_vectors_
plt.scatter(support_vectors[:, 0], support_vectors[:, 1],
            s=200, facecolors='none', edgecolors='k')

plt.show()

上述代碼使用給定的樣本數據訓練一個(gè)稀疏支持向量機模型,并繪制數據點(diǎn)、超平面以及支持向量。

超平面由wb參數定義,支持向量表示離超平面最近的數據點(diǎn)。

核貝葉斯支持向量機

核貝葉斯支持向量機通過(guò)學(xué)習一些已知的例子,并找到一個(gè)特殊的邊界,用于將不同的事物區分開(kāi)來(lái)。

核貝葉斯支持向量機可以應用于很多現實(shí)生活中的問(wèn)題。例如:

1、郵件分類(lèi):將電子郵件自動(dòng)分為垃圾郵件和非垃圾郵件。

2、圖像識別:判斷圖像中是貓還是狗。

3、情感分析:自動(dòng)判斷文本評論是正面還是負面情感。

核貝葉斯支持向量機的公式可以簡(jiǎn)化為以下形式:

在這個(gè)公式中,代表我們要進(jìn)行分類(lèi)的事物。 是與樣本數據相關(guān)的權重, 是每個(gè)樣本數據對應的類(lèi)別標簽(例如,1代表一類(lèi)事物,-1代表另一類(lèi)事物)。

舉個(gè) Python 的例子

import numpy as np
import plotly.graph_objects as go
from sklearn.svm import SVC

# 生成示例數據
X = np.array([[123], [456], [789], [101112]])
y = np.array([0110])

# 創(chuàng )建支持向量機模型
model = SVC(kernel='linear')

# 擬合數據
model.fit(X, y)

# 繪制數據點(diǎn)
data = [
    go.Scatter3d(
        x=X[:, 0],
        y=X[:, 1],
        z=X[:, 2],
        mode='markers',
        marker=dict(
            size=6,
            color=y,
            colorscale='Viridis',
            opacity=0.8
        )
    )
]

# 繪制決策邊界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
z_min, z_max = X[:, 2].min() - 1, X[:, 2].max() + 1
xx, yy, zz = np.meshgrid(np.arange(x_min, x_max, 0.1),
                         np.arange(y_min, y_max, 0.1),
                         np.arange(z_min, z_max, 0.1))
Z = model.predict(np.c_[xx.ravel(), yy.ravel(), zz.ravel()])
Z = Z.reshape(xx.shape)

# 添加決策邊界到圖形中
data.append(
    go.Surface(
        x=xx,
        y=yy,
        z=zz,
        surfacecolor=Z,
        colorscale='Viridis',
        showscale=False
    )
)

# 創(chuàng )建布局
layout = go.Layout(
    scene=dict(
        xaxis=dict(title='X'),
        yaxis=dict(title='Y'),
        zaxis=dict(title='Z')
    ),
    margin=dict(l=0, r=0, b=0, t=0)
)

# 繪制圖形
fig = go.Figure(data=data, layout=layout)
fig.show()

上述代碼使用示例數據訓練了一個(gè)核貝葉斯支持向量機模型,并利用 Plotly 生成了直觀(guān)的一個(gè)三維圖像。

不平衡類(lèi)別支持向量機

不平衡類(lèi)別支持向量機是一種分類(lèi)算法,它使用支持向量機的思想來(lái)處理不平衡類(lèi)別數據集。

它的目標是通過(guò)調整決策邊界,使得分類(lèi)模型能夠更好地識別少數類(lèi)別,并提高整體分類(lèi)準確率。

不平衡類(lèi)別支持向量機常用于以下場(chǎng)景:

  • 欺詐檢測:在信用卡交易中,欺詐行為往往只占極小比例,而正常交易占大部分。
  • 醫學(xué)診斷:對于某些罕見(jiàn)病癥或疾病,陽(yáng)性樣本數量通常較少。
  • 文本分類(lèi):在某些特定的主題或事件中,負面評論或垃圾郵件的數量相對較少。

不平衡類(lèi)別支持向量機的目標是最小化以下公式:

其中,是決策邊界的權重向量,是偏置項,是懲罰參數,是松弛變量。

下面是一個(gè)簡(jiǎn)單的使用不平衡類(lèi)別支持向量機進(jìn)行分類(lèi)的示例代碼:

import numpy as np
from sklearn.svm import SVC
import plotly.graph_objects as go

# 創(chuàng )建訓練數據
X = np.array([[34], [56], [78], [910]])
y = np.array([0011])

# 創(chuàng )建不平衡類(lèi)別支持向量機模型
model = SVC(class_weight='balanced')

# 擬合模型
model.fit(X, y)

# 生成網(wǎng)格點(diǎn)用于繪制決策邊界
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1), np.arange(y_min, y_max, 0.1))
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)

# 繪制三維圖
fig = go.Figure(data=[go.Surface(z=Z, x=xx, y=yy)])
fig.update_layout(title='Decision Boundary', autosize=False,
                  width=500, height=500, margin=dict(l=65, r=50, b=65, t=90))
fig.show()

這段代碼使用 Scikit-learn 庫中的 SVC 類(lèi)來(lái)創(chuàng )建不平衡類(lèi)別支持向量機模型,并使用plotly庫繪制三維圖來(lái)展示決策邊界。在訓練數據中,我們有兩個(gè)特征和兩個(gè)類(lèi)別。通過(guò)擬合模型并預測網(wǎng)格點(diǎn)上的分類(lèi)結果,我們可以得到?jīng)Q策邊界,并將其可視化。

最后

今天介紹了關(guān)于svm的各個(gè)細節和應用。
喜歡的朋友可以收藏、點(diǎn)贊、轉發(fā)起來(lái)!
關(guān)注本號,帶來(lái)更多干貨實(shí)例,提升工作學(xué)習效率!
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
使用支持向量機SVM進(jìn)行分類(lèi)
一個(gè)簡(jiǎn)單的案例帶你了解支持向量機算法(Python代碼)
Python 深入淺出支持向量機(SVM)算法
ML之SVM:基于sklearn的svm算法實(shí)現對支持向量的數據進(jìn)行標注
機器學(xué)習基礎篇:支持向量機(SVM)理論與實(shí)踐
數據挖掘干貨(k-NN)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久