我正在尝试为我的SVM计算最佳C和伽马。尝试运行脚本时,我会收到此错误:
ValueError: Invalid parameter max_features for estimator SVC. Check the list of available parameters with
estionator.get_params()。keys() .
我浏览了文档,以了解n_estimators
的实际含义,以便我知道应该填写的值。但这对我来说并不完全清楚。有人可以告诉我这个值应该是什么,以便我可以运行脚本以找到最佳的C和伽玛?
我的代码:
if __name__=='__main__':
fname = "/home/John/labels.csv"
labels = pd.read_csv(fname, header=None).as_matrix()[:, 1]
labels = map(itemgetter(1),
map(os.path.split,
map(os.path.dirname, labels)))
fname = "/home/John/reps.csv"
embeddings = pd.read_csv(fname, header=None).as_matrix()
le = LabelEncoder().fit(labels)
labelsNum = le.transform(labels)
nClasses = len(le.classes_)
svcClassifier = SVC(kernel='rbf', probability=True, C=10, gamma=10)
#classifier = OneVsRestClassifier(svcClassifier).fit(embeddings, labelsNum)
param_grid = {
'n_estimators': [200, 700],
'max_features': ['auto', 'sqrt', 'log2']
}
CV_rfc = GridSearchCV(estimator=svcClassifier, param_grid=param_grid, cv= 5)
CV_rfc.fit(embeddings, labelsNum)
print CV_rfc.best_params_
尝试后,我手动发现在我的情况下,C=10
和gamma=10
给出了最佳结果。但是,我想使用此函数来找出最佳值应该是什么。
我的代码是由这篇文章启发的:如何在GridSearchCV上获得最佳估计器(随机森林分类器Scikit)
SVC
类没有参数max_features
或n_estimators
,因为这些是您用作代码基础的RandomForest
的参数。如果要优化有关C
和gamma
的模型,则可以尝试使用:
param_grid = {
'C': [0.1, 0.5, 1.0],
'gamma': [0.1, 0.5, 1.0]
}
furhtermore,我还建议您搜索最佳的kernel
,该rbf
,linear
或poly
在sklearn
Framework中。
编辑:此处的值只是Arbitray,旨在说明一般方法。您应该在此处添加许多不同的值,这取决于您的情况。范围也取决于您的情况。