csv文件下载
CSV(indian_pines.csv)文件在本人博客另外连接可自由下载,怎么生成的这个文件在SVM那篇文章写了
网格搜索法
网格搜索法是指定参数值的一种穷举搜索方法,通过将估计函数的参数通过交叉验证的方法进行优化来得到最优的学习算法。
即,将各个参数可能的取值进行排列组合,列出所有可能的组合结果生成“网格”。然后将各组合用于SVM训练,并使用交叉验证对表现进行评估。在拟合函数尝试了所有的参数组合后,返回一个合适的分类器,自动调整至最佳参数组合。
通俗理解
遍历各种组合参数,得到最佳得分的分类参数,最后使用该组参数
搜索法1代码
循环遍历几种参数,拿去训练,然后比较最佳得分
from sklearn.datasets import load_iris
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
import pandas as pd
data = pd.read_csv(r'E:/Indian_pine.csv', header=None)
data = data.values
data_D = data[:, :-1]
data_L = data[:, -1]
X_train, X_test, y_train, y_test = train_test_split(data_D, data_L, test_size=0.5)
# grid search start
best_score = 0
best_parameters = {}
for gamma in [0.1, 1]:
for c in [0.1, 1]:
# 对于每种参数可能的组合,进行一次训练
svm = SVC(gamma=gamma, C=c)
svm.fit(X_train, y_train)
# 返回给定测试数据和标签的平均精确度
score = svm.score(X_test, y_test)
# 找到表现最好的参数
if score > best_score:
best_score = score
best_parameters = {'gamma': gamma, "C": c}
print('Best socre:{:.2f}'.format(best_score))
print('Best parameters{}'.format(best_parameters))
运行时间会长一些,慢慢等待