函式名稱: SVM::train()
函式描述: SVM::train() 函式用於訓練一個支援向量機(SVM)模型。
適用版本: PHP 7.4.0 及以上版本
用法:
public static SVM::train(array $samples, array $labels [, array $options = []]) : SVMModel
引數:
$samples
: 包含訓練樣本的二維陣列。每個樣本是一個一維陣列,包含輸入特徵的值。$labels
: 包含訓練樣本標籤的一維陣列。每個標籤對應於相應樣本的類別。$options
(可選): 一個關聯陣列,用於指定訓練選項。支援以下選項:'kernel_type'
: 指定使用的核心型別。預設值為SVM::KERNEL_RBF
。可選值有:SVM::KERNEL_LINEAR
: 線性核函式SVM::KERNEL_POLY
: 多項式核函式SVM::KERNEL_RBF
: 徑向基函式(RBF)核函式SVM::KERNEL_SIGMOID
: 雙曲正切核函式
'degree'
: 當使用多項式核函式時,指定多項式的次數。預設值為 3。'gamma'
: 當使用 RBF 或多項式核函式時,指定 gamma 引數。預設值為 0.1。'coef0'
: 當使用多項式或雙曲正切核函式時,指定常數項。預設值為 0。'cost'
: 指定懲罰引數。預設值為 1。'nu'
: 指定 nu-SVC 引數。預設值為 0.5。'cache_size'
: 指定記憶體快取大小(以 MB 為單位)。預設值為 100。'epsilon'
: 指定收斂閾值。預設值為 0.001。'shrinking'
: 指定是否使用啟發式方法來加速訓練。預設值為 true。'probability'
: 指定是否啟用機率估計。預設值為 false。
返回值: 返回一個 SVMModel 物件,表示訓練得到的 SVM 模型。
示例:
$samples = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
];
$labels = [0, 1, 0];
$options = [
'kernel_type' => SVM::KERNEL_LINEAR,
'cost' => 10
];
$model = SVM::train($samples, $labels, $options);
// 使用訓練得到的模型進行預測
$sample = [2, 3, 4];
$predictedLabel = $model->predict($sample);
echo "預測結果: " . $predictedLabel;
以上示例中,我們首先定義了一個包含訓練樣本和標籤的陣列。然後,我們使用 SVM::train() 函式訓練一個線性核函式的 SVM 模型,設定懲罰引數為 10。最後,我們使用訓練得到的模型對一個新樣本進行預測,並輸出預測結果。
請注意,示例中的選項和引數值僅供參考,實際使用時需要根據具體情況進行調整。