鉴于机器学习模型RBF SVC称为'm',我在gamma值上执行了gridSearchCV,以优化召回。 我想回答这个问题: “网格搜索应该找到最适合回忆的模型。这个模型的召回比精度更好?”
所以我做了gridSearchCV:
grid_values = {'gamma': [0.001, 0.01, 0.05, 0.1, 1, 10, 100]}
grid_m_re = GridSearchCV(m, param_grid = grid_values, scoring = 'recall')
grid_m_re.fit(X_train, y_train)
y_decision_fn_scores_re = grid_m_re.decision_function(X_test)
print('Grid best parameter (max. recall): ', grid_m_re.best_params_)
print('Grid best score (recall): ', grid_m_re.best_score_)
这告诉我最好的模型是伽玛= 0.001并且召回得分为1。
我想知道如何让这个模型的精度得到这个模型的交易,因为GridSearchCV只有属性来获得它的优化。([Doc sklearn.GridSearchCV][1]
)
答案 0 :(得分:1)
不确定是否有更简单/更直接的方法来获得此功能,但是这种方法还允许您捕获“最佳”模型以供日后使用:
首先,您的简历适合培训数据吗?
grid_m_re = GridSearchCV(m, param_grid = grid_values, scoring = 'recall')
grid_m_re.fit(X_train, y_train)
完成后,您可以提取“最佳”模型(由履历期间的得分条件确定),然后根据需要使用它:
m_best = grid_m_re.best_estimator_
以及您的具体情况:
from sklearn.metrics import precision_score
y_pred = m_best.predict(X_test)
precision_score(y_test, y_pred)
答案 1 :(得分:0)
如果你不同时优化C和伽玛,你可以轻松过度补充。
如果您在X轴上绘制带有C的SVC,在y轴上绘制伽马并将其调用为颜色you get some kind of V-Shape, see here
因此,如果您进行网格搜索,则可以同时更好地优化C和gamma。
问题在于,通常你会得到小C值的最佳结果,而在那个区域,V形有它的尖端:不是很大而且难以击中。
我最近使用过:
make a random grid of 10 points
every point contains C, gamma, direction, speed
cut the dataset with stratifiedShuffleSplit
fit & estimate score with cross validation
repeat:
kill the worst two points
the best two points spawn a kid
move every point in its direction with just a little bit of random,
fit & estimate score with cross validation
(if a point notice it goes downward, turn around and half speed)
until break criterion is hit
像魅力一样工作。
我使用了特征空间中的最大距离除以4作为初始速度, 方向最大随机为pi / 4
嗯,交叉验证有点贵。
Cleptocreatively inspired by this paper.
...和另一个编辑:
我在循环中使用了10到20个循环来获得完美的点数。 如果您的数据集太大而无法进行多次拟合,请为前几次培训创建一个代表性子集...