给出了一个叫m的机器学习模型,我对伽马值执行了一个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_)这告诉我最好的模式是gamma=0.001,它的召回得分为1。
我想知道如何获得该模型的精度,以获得该模型的交易,因为GridSearchCV只有属性才能得到优化的结果。([Doc sklearn.GridSearchCV][1])
发布于 2019-03-06 21:48:44
不确定是否有一种更简单/更直接的方法来实现这一点,但这种方法还允许您捕获“最佳”模型,以便稍后使用:
首先,你的简历是否符合培训数据:
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)发布于 2018-03-29 05:48:41
如果你不同时优化C和伽马,你很容易就会过度适应。
如果在X轴上用C绘制SVC,在y轴上绘制伽马,并将其回忆为彩色你得到某种V字形,看这里
所以如果你做网格搜索,最好同时优化C和伽马。
问题是,对于小的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很有魅力。
以特征空间中的最大距离除以四作为初始速度,方向最大随机为pi/4。
交叉验证有点费钱。
..。还有另一个编辑:
我在循环中使用了10到20个循环来得到完美的点。如果您的数据集太大,无法进行多次匹配,请为前几次培训创建一个有代表性的子集.
https://stackoverflow.com/questions/49035011
复制相似问题