国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花

這篇具有很好參考價(jià)值的文章主要介紹了機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

????實(shí)驗(yàn)內(nèi)容????

基于鳶尾花數(shù)據(jù)集,完成關(guān)于支持向量機(jī)的分類模型訓(xùn)練、測(cè)試與評(píng)估。

????數(shù)據(jù)預(yù)處理????

代碼

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler

# ==================特征探索====================

# ===認(rèn)識(shí)數(shù)據(jù)===
iris = datasets.load_iris()
print("Feature names: {}".format(iris['feature_names']))
print("Target names: {}".format(iris["target_names"]))
print("target:\n{}".format(iris['target'])) # 0 代表setosa,1 代表versicolor,2 代表virginica。
print("shape of data: {}".format(iris['data'].shape))

# ===轉(zhuǎn)為df對(duì)象===
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['label'] = iris.target
df.columns = ['sepal length', 'sepal width', 'petal length', 'petal width', 'label']
feature_df=df.drop('label',axis=1,inplace=False) # 取出特征
print(df)

# ===相關(guān)性矩陣===
corr_matrix = feature_df.corr()
plt.figure(figsize=(8, 6))
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.title('Correlation Matrix')
plt.show()

# ===徑向可視化===
ax = pd.plotting.radviz(df, 'label', colormap='brg')
ax.add_artist(plt.Circle((0,0), 1, color='r', fill = False))

# ===各特征之間關(guān)系矩陣圖===
# 設(shè)置顏色主題
g = sns.pairplot(data=df, palette="pastel", hue= 'label')

認(rèn)識(shí)數(shù)據(jù)

屬性:花萼長(zhǎng)度,花萼寬度,花瓣長(zhǎng)度,花瓣寬度
分類:Setosa,Versicolour,Virginica
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

相關(guān)性分析

如下圖,可以直觀看到花瓣寬度(Petal Width)和花瓣長(zhǎng)度(Petal Length)存在很高的正相關(guān)性,且它們與花萼長(zhǎng)度(Speal Length)也具有很高的正相關(guān)性,而花萼寬度(Speal Width)與其他三個(gè)屬性特征的相關(guān)性均很弱。
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

徑向可視化

用于觀察每種類別花的四個(gè)特征之間的相對(duì)關(guān)系(線性大小關(guān)系)。
如下圖,其中0、1、2分別對(duì)應(yīng)Setosa,Versicolour,Virginica類別,可以直觀看出:Setosa花的花萼寬度(Speal Width)和花萼長(zhǎng)度(Speal Length)這兩個(gè)特征相比其他兩個(gè)特征花瓣寬度(Petal Width)和花瓣長(zhǎng)度(Petal Length)具有區(qū)分性,而Versicolour,Virginica花的四個(gè)特征分布很相似,不好區(qū)分。
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

各個(gè)特征之間的關(guān)系圖

從下圖可以看出,Setosa花的花瓣寬度(Petal Width)和花瓣長(zhǎng)度(Petal Length)的分布相比其他兩類具有很好的區(qū)分性。
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

????支持向量機(jī)SVM求解????

直覺理解:

對(duì)于二維特征,如何區(qū)分圖中不同的點(diǎn)
第一種思路:如下左圖畫一條線,但是是一個(gè)不太好的分割線
而換一種思路,如下右圖,先找兩個(gè)分類的決策邊界(兩邊的虛線)之間的間隔區(qū)域,再取間隔區(qū)域的中間為分割線,這樣能保證分割效果最佳。因此尋找最佳決策邊界線(中間線)的問題可以轉(zhuǎn)化為求解兩類數(shù)據(jù)的最大間隔問題。
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
因此將決策邊界上下移動(dòng)c,得到間隔的兩個(gè)邊界線,如下左圖,此時(shí)這兩個(gè)邊界線稱為支持向量,它們決定了間隔距離。如下右圖,經(jīng)過數(shù)學(xué)變換,可以得到最終要求的超平面表達(dá)式,即求解參數(shù)w、b即可
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
除此之外,只考慮分類點(diǎn)的決策邊界之間的距離的間隔,稱為硬間隔,同時(shí)考慮距離和異常點(diǎn)損失(下圖紅線上方的黃點(diǎn))的間隔,稱為軟間隔。
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

數(shù)學(xué)推導(dǎo)

某點(diǎn)到超平面的距離r:(幾何間隔,可以代表分類正確的確信度)
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
目標(biāo)超平面之間的間隔距離γ:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
約束條件:點(diǎn)到超平面距離r >= 超平面間隔距離γ的一半:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
則最終求解的函數(shù)表達(dá)式為:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

但是以上函數(shù)表達(dá)式為非凸函數(shù),因此要:

  1. 先轉(zhuǎn)為凸函數(shù)
  2. 用拉格朗日乘子法和KKT條件求解對(duì)偶問題

1.轉(zhuǎn)為凸函數(shù):
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

2.用拉格朗日乘子法和KKT條件求解對(duì)偶問題
這個(gè)過程就涉及到高階的數(shù)學(xué)知識(shí)了,我這里也不是很懂,只大概了解:
為什么要用拉格朗日乘子法:將不等式約束轉(zhuǎn)換為等式約束。
整合成如下拉格朗日表達(dá)式:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
依據(jù)對(duì)偶性,求解問題為:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
先求解:機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
根據(jù)KKT條件:對(duì)w、b求偏導(dǎo)可得:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
代入L(w,b,a):機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
再求解:機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

3.利用SMO求解α、從而求解w、b
現(xiàn)在優(yōu)化問題變成了如上的形式,但是它的規(guī)模正比于訓(xùn)練樣本數(shù)m,當(dāng)m很大時(shí),會(huì)有很大開銷,因此針對(duì)這個(gè)問題的特性,有更高效的優(yōu)化算法,即序列最小優(yōu)化(SMO)算法。
其大概思想是:先固定α以外的參數(shù),然后對(duì)α求極值,在上述約束條件下,α可以由其他變量導(dǎo)出,這樣,在參數(shù)初始化后,不斷迭代,可以最終達(dá)到收斂。
通過SMO求得的w、b為:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
則超平面的公式為:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
最后根據(jù)超平面的符號(hào),表達(dá)成分類決策函數(shù)即可:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

代碼

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler


class SMO:
    def __init__(self, X, y, C, kernel, tol, max_passes=10):
        self.X = X  # 樣本特征 m*n m個(gè)樣本 n個(gè)特征
        self.y = y  # 樣本標(biāo)簽 m*1
        self.C = C  # 懲罰因子, 用于控制松弛變量的影響
        self.kernel = kernel  # 核函數(shù)
        self.tol = tol  # 容忍度
        self.max_passes = max_passes  # 最大迭代次數(shù)
        self.m, self.n = X.shape
        self.alpha = np.zeros(self.m)
        self.b = 0
        self.w = np.zeros(self.n)

    # 計(jì)算核函數(shù)
    def K(self, i, j):
        if self.kernel == 'linear':
            return np.dot(self.X[i].T, self.X[j])
        elif self.kernel == 'rbf':
            gamma = 0.5
            return np.exp(-gamma * np.linalg.norm(self.X[i] - self.X[j]) ** 2)

        else:
            raise ValueError('Invalid kernel specified')

    def predict(self, X_test):
        pred = np.zeros_like(X_test[:, 0])
        pred = np.dot(X_test, self.w) + self.b
        return np.sign(pred)

    def train(self):
        """
        訓(xùn)練模型
        :return:
        """
        passes = 0
        while passes < self.max_passes:
            num_changed_alphas = 0
            for i in range(self.m):
                # 計(jì)算E_i, E_i = f(x_i) - y_i, f(x_i) = w^T * x_i + b
                # 計(jì)算誤差E_i
                E_i = 0
                for ii in range(self.m):
                    E_i += self.alpha[ii] * self.y[ii] * self.K(ii, i)
                E_i += self.b - self.y[i]
                # 檢驗(yàn)樣本x_i是否滿足KKT條件
                if (self.y[i] * E_i < -self.tol and self.alpha[i] < self.C) or (self.y[i] * E_i > self.tol and self.alpha[i] > 0):
                    # 隨機(jī)選擇樣本x_j
                    j = np.random.choice(list(range(i)) + list(range(i + 1, self.m)), size=1)[0]
                    # 計(jì)算E_j, E_j = f(x_j) - y_j, f(x_j) = w^T * x_j + b
                    # E_j用于檢驗(yàn)樣本x_j是否滿足KKT條件
                    E_j = 0
                    for jj in range(self.m):
                        E_j += self.alpha[jj] * self.y[jj] * self.K(jj, j)
                    E_j += self.b - self.y[j]

                    alpha_i_old = self.alpha[i].copy()
                    alpha_j_old = self.alpha[j].copy()

                    # L和H用于將alpha[j]調(diào)整到[0, C]之間
                    if self.y[i] != self.y[j]:
                        L = max(0, self.alpha[j] - self.alpha[i])
                        H = min(self.C, self.C + self.alpha[j] - self.alpha[i])
                    else:
                        L = max(0, self.alpha[i] + self.alpha[j] - self.C)
                        H = min(self.C, self.alpha[i] + self.alpha[j])

                    # 如果L == H,則不需要更新alpha[j]
                    if L == H:
                        continue

                    # eta: alpha[j]的最優(yōu)修改量
                    eta = 2 * self.K(i, j) - self.K(i, i) - self.K(j, j)
                    # 如果eta >= 0, 則不需要更新alpha[j]
                    if eta >= 0:
                        continue

                    # 更新alpha[j]
                    self.alpha[j] -= (self.y[j] * (E_i - E_j)) / eta
                    # 根據(jù)取值范圍修剪alpha[j]
                    self.alpha[j] = np.clip(self.alpha[j], L, H)

                    # 檢查alpha[j]是否只有輕微改變,如果是則退出for循環(huán)
                    if abs(self.alpha[j] - alpha_j_old) < 1e-5:
                        continue

                    # 更新alpha[i]
                    self.alpha[i] += self.y[i] * self.y[j] * (alpha_j_old - self.alpha[j])

                    # 更新b1和b2
                    b1 = self.b - E_i - self.y[i] * (self.alpha[i] - alpha_i_old) * self.K(i, i) \
                         - self.y[j] * (self.alpha[j] - alpha_j_old) * self.K(i, j)
                    b2 = self.b - E_j - self.y[i] * (self.alpha[i] - alpha_i_old) * self.K(i, j) \
                         - self.y[j] * (self.alpha[j] - alpha_j_old) * self.K(j, j)

                    # 根據(jù)b1和b2更新b
                    if 0 < self.alpha[i] and self.alpha[i] < self.C:
                        self.b = b1
                    elif 0 < self.alpha[j] and self.alpha[j] < self.C:
                        self.b = b2
                    else:
                        self.b = (b1 + b2) / 2

                    num_changed_alphas += 1

            if num_changed_alphas == 0:
                passes += 1
            else:
                passes = 0

        # 提取支持向量和對(duì)應(yīng)的參數(shù)
        idx = self.alpha > 0  # 支持向量的索引
        # SVs = X[idx]
        selected_idx = np.where(idx)[0]
        SVs = self.X[selected_idx]
        SV_labels = self.y[selected_idx]
        SV_alphas = self.alpha[selected_idx]

        # 計(jì)算權(quán)重向量和截距
        self.w = np.sum(SV_alphas[:, None] * SV_labels[:, None] * SVs, axis=0)
        self.b = np.mean(SV_labels - np.dot(SVs, self.w))
        print("w", self.w)
        print("b", self.b)

    def score(self, X, y):
        predict = self.predict(X)
        print("predict", predict)
        print("target", y)
        return np.mean(predict == y)
        
# 加載鳶尾花數(shù)據(jù)集
iris = datasets.load_iris()
X = iris.data
y = iris.target
y[y != 0] = -1
y[y == 0] = 1 # 分成兩類



# 為了方便可視化,只取前兩個(gè)特征
X2 = X[:,:2]
# # 分別畫出類別 0 和 1 的點(diǎn)
plt.scatter(X2[y == 1, 0], X2[y == 1, 1], color='red',label="class 1")
plt.scatter(X2[y == -1, 0], X2[y == -1, 1], color='blue',label="class -1")
plt.xlabel("Speal Width")
plt.ylabel("Speal Length")
plt.legend()
plt.show()

# 數(shù)據(jù)預(yù)處理,將特征進(jìn)行標(biāo)準(zhǔn)化,并將數(shù)據(jù)劃分為訓(xùn)練集和測(cè)試集
scaler = StandardScaler()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=3706)
X_train_std = scaler.fit_transform(X_train)

# 創(chuàng)建SVM對(duì)象并訓(xùn)練模型
svm = SMO(X_train_std, y_train, C=0.6, kernel='rbf', tol=0.001)
svm.train()


# 預(yù)測(cè)測(cè)試集的結(jié)果并計(jì)算準(zhǔn)確率
X_test_std = scaler.transform(X_test)
accuracy = svm.score(X_test_std, y_test)
print('正確率: {:.2%}'.format(accuracy))

from sklearn.metrics import confusion_matrix, roc_curve, auc
y_pred=svm.predict(X_test_std)

# 繪制混淆矩陣
def cal_ConfusialMatrix(y_true_labels, y_pred_labels):
    cm = np.zeros((2, 2))
    y_true_labels = [0 if x == -1 else x for x in y_true_labels]
    y_pred_labels = [0 if x == -1 else x for x in y_pred_labels]
    for i in range(len(y_true_labels)):
        cm[ y_true_labels[i], y_pred_labels[i] ] += 1
    plt.figure(figsize=(8, 6))
    sns.heatmap(cm, annot=True, fmt='g', cmap='Blues', xticklabels=['Predicted Negative', 'Predicted Positive'], yticklabels=['Actual Negative', 'Actual Positive'])
    plt.xlabel('Predicted label')
    plt.ylabel('True label')
    plt.title('Confusion Matrix')
    plt.show()

y_pred=[int(x) for x in y_pred]
y_test=[int(x) for x in y_test]
cal_ConfusialMatrix(y_test, y_pred)

運(yùn)行結(jié)果

由于鳶尾花為三分類,為了簡(jiǎn)化實(shí)驗(yàn),這里先把setosa定義為1類(+1),versicolor、virginica組合定義為1類(-1)。
做出其對(duì)于sepal width和sepal length的分布圖,可以看到,訓(xùn)練樣本應(yīng)該是線性可分的。
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

按照訓(xùn)練集:測(cè)試集=8:2的比例進(jìn)行訓(xùn)練,之后進(jìn)行測(cè)試集分類結(jié)果如下:

線性核:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

高斯核:
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM
機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花,機(jī)器學(xué)習(xí),機(jī)器學(xué)習(xí),支持向量機(jī),分類,鳶尾花,SVM

????總結(jié)????

實(shí)驗(yàn)結(jié)果:
當(dāng)使用的核函數(shù)為線性核時(shí),準(zhǔn)確率能達(dá)到100%,而使用高斯核時(shí),準(zhǔn)確率降低到96.67%(其實(shí)從混淆矩陣可以看到,只分類錯(cuò)誤1個(gè)),且運(yùn)行時(shí)間相對(duì)長(zhǎng)很多。

分析原因:
線性核適用于數(shù)據(jù)集具有線性可分性的情況,即類別之間可以通過一條直線進(jìn)行劃分。在這種情況下,線性核可以提供較好的分類性能,并且計(jì)算效率較高。
高斯核可以更好地處理非線性問題。高斯核可以將輸入空間映射到一個(gè)更高維度的特征空間,從而使得數(shù)據(jù)在新的特征空間中更容易被線性分割。但是,高斯核也有其缺點(diǎn):在使用高斯核時(shí),需要調(diào)整的超參數(shù)較多,如 gamma 參數(shù)和正則化參數(shù) C,不正確的參數(shù)選擇可能導(dǎo)致過擬合或欠擬合的問題。此外,高斯核計(jì)算復(fù)雜度較高,需要計(jì)算每個(gè)樣本與其他樣本之間的相似度,因此在數(shù)據(jù)集上的訓(xùn)練和預(yù)測(cè)時(shí)間可能較長(zhǎng)。
因此綜合分析,本實(shí)驗(yàn)中鳶尾花的特征為線性,因此使用線性核效果更佳。同時(shí)高斯核對(duì)參數(shù)比較敏感,實(shí)驗(yàn)中對(duì)于高斯核的參數(shù)選擇可能也不夠恰當(dāng)。文章來源地址http://www.zghlxwxcb.cn/news/detail-820179.html

到了這里,關(guān)于機(jī)器學(xué)習(xí)實(shí)驗(yàn)3——支持向量機(jī)分類鳶尾花的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包