机器学习之支持向量机SVM如何停止调参(附代码完成)
作者头像
  • 大朋VR
  • 2019-11-18 07:27:01 2

引荐专栏

在支持向量机(SVM)的应用中,选择合适的参数C和核函数参数γ至关重要。本文旨在演示如何选取最合适的参数组合,以优化模型性能。我们将采用两种方法:手动遍历和利用sklearn中的工具来实现自动化。

目前我们有一个数据集,其所有变量已经定义。我们将数据集分为训练集和验证集,以便评估模型的泛化能力。

数据准备

我们首先从数据集中提取训练集和验证集: python training_data = pd.DataFrame(mat.get('X'), columns=['X1', 'X2']) training_data['y'] = mat.get('y') validation_data = pd.DataFrame(mat.get('Xval'), columns=['X1', 'X2']) validation_data['y'] = mat.get('yval')

参数搜索

接下来,我们需要搜索不同的C和γ组合,找到最优的参数组合。我们设定候选参数值,并生成所有可能的组合: python candidates = [0.01, 0.03, 0.1, 0.3, 1, 3, 10, 30, 100] combinations = [(C, gamma) for C in candidates for gamma in candidates]

对于每个参数组合,我们训练一个SVM模型,并在验证集上评估其性能: ```python accuracies = []

for C, gamma in combinations: svc = svm.SVC(C=C, gamma=gamma) svc.fit(trainingdata[['X1', 'X2']], trainingdata['y']) accuracy = svc.score(validationdata[['X1', 'X2']], validationdata['y']) accuracies.append(accuracy)

bestaccuracyindex = np.argmax(accuracies) bestparams = combinations[bestaccuracyindex] bestaccuracy = accuracies[bestaccuracyindex] ```

最终,我们确定了最佳参数组合及其相应的准确度: python print(f"Best Accuracy: {best_accuracy}") print(f"Best Parameters: {best_params}")

模型评估

在确定了最佳参数组合后,我们使用这些参数构建最终模型,并评估其在验证集上的表现: python best_svm = svm.SVC(C=best_params[0], gamma=best_params[1]) best_svm.fit(training_data[['X1', 'X2']], training_data['y']) predictions = best_svm.predict(validation_data[['X1', 'X2']]) print(metrics.classification_report(validation_data['y'], predictions))

使用交叉验证

除了手动遍历外,我们还可以使用sklearn提供的交叉验证功能来简化这一过程。这种方法可以自动搜索最佳参数组合: python if __name__ == "__main__": parameters = {'C': candidates, 'gamma': candidates} svc = svm.SVC() clf = GridSearchCV(svc, parameters, n_jobs=-1) clf.fit(training_data[['X1', 'X2']], training_data['y']) print("Best Parameters:", clf.best_params_) print("Best Score:", clf.best_score_) predictions = clf.predict(validation_data[['X1', 'X2']]) print(metrics.classification_report(validation_data['y'], predictions))

通过以上步骤,我们可以有效地选择和评估SVM的最佳参数组合,从而提升模型的性能。

    本文来源:图灵汇
责任编辑: : 大朋VR
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
习之向量停止机器完成代码支持如何SVM
    下一篇