- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我知道 sgdclassifier hinge loss 不支持概率估计。那么在使用 log_loss 指标时如何将它与 GridSearchCV 一起使用呢?
clf = SGDClassifier(loss='hinge')
grid_params = {'alpha': [0.0001, 0.001, 0.01]}
grid_search = GridSearchCV(clf, grid_params, scoring='neg_log_loss')
grid_search.fit(X_train, y_train)
它返回:
AttributeError: probability estimates are not available for loss='hinge'
我有什么办法可以让它工作吗?
最佳答案
将损失从铰链更改为对数就是将算法从 SVM 更改为逻辑回归,所以我认为这是不可能的。
但是,您可以将 SGDClassifier 设置为 Scikit-learn 的 CalibratedClassifierCV 中的基本估计器,这将生成概率估计。
这是一个例子:
from sklearn.calibration import CalibratedClassifierCV
from sklearn.linear_model import SGDClassifier
from sklearn.model_selection import GridSearchCV, train_test_split
from sklearn.datasets import load_iris
# load some example data
data = load_iris()
X = data['data']
y = data['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
clf = SGDClassifier(loss='hinge', max_iter=100)
calibrated_clf = CalibratedClassifierCV(base_estimator=clf, method='sigmoid', cv=3) # set the SGD classifier as the base estimator
grid_params = {'base_estimator__alpha': [0.0001, 0.001, 0.01]} # note 'base_estimator__' in the params because you want to change params in the SGDClassifier
grid_search = GridSearchCV(estimator=calibrated_clf, param_grid=grid_params, cv=3)
grid_search.fit(X_train, y_train)
print(grid_search.best_params_)
{'base_estimator__alpha': 0.0001}
现在用最佳参数拟合校准分类器:
calibrated_clf.set_params(**grid_search.best_params_)
calibrated_clf.fit(X_train, y_train)
preds = calibrated_clf.predict_proba(X_test)
print(preds)
# probabilities for each of the 3 classes:
array([[7.62825746e-02, 5.24891243e-01, 3.98826183e-01],
[9.24810700e-01, 7.50659865e-02, 1.23313813e-04],
[8.40690799e-01, 1.59138563e-01, 1.70637465e-04],
[7.10696359e-01, 2.88969750e-01, 3.33891072e-04],
[7.99360835e-02, 7.83076911e-01, 1.36987006e-01],
[9.90417693e-03, 7.72846023e-02, 9.12811221e-01],
[1.07116396e-02, 3.03030985e-01, 6.86257375e-01],
[1.43944221e-02, 1.17223024e-01, 8.68382554e-01],
[1.11659634e-01, 7.35051942e-01, 1.53288424e-01],
[8.30127745e-03, 1.39546231e-01, 8.52152492e-01],
[2.07825315e-02, 1.56925620e-01, 8.22291849e-01],
[8.88421387e-01, 1.11384933e-01, 1.93680314e-04],
[6.90696963e-01, 3.09038629e-01, 2.64408097e-04],
[1.26043359e-01, 5.78366890e-01, 2.95589750e-01],
[3.83356263e-03, 4.06197230e-01, 5.89969207e-01],
[7.78520570e-01, 2.21144460e-01, 3.34969184e-04],
[5.11227086e-02, 6.32329915e-01, 3.16547377e-01],
[8.24310445e-01, 1.75412791e-01, 2.76763715e-04],
[3.50118697e-02, 3.91028064e-01, 5.73960067e-01],
[1.23034113e-01, 7.32289832e-01, 1.44676055e-01],
[3.44588463e-01, 5.92799831e-01, 6.26117056e-02],
[2.67170305e-02, 5.78551461e-01, 3.94731509e-01],
[5.92943916e-02, 5.57127843e-01, 3.83577765e-01],
[7.16297083e-01, 2.83282184e-01, 4.20732771e-04],
[7.82091800e-03, 1.30949377e-01, 8.61229705e-01],
[1.70781668e-01, 5.47432635e-01, 2.81785697e-01],
[8.38288358e-01, 1.61495161e-01, 2.16480625e-04],
[2.11106665e-02, 4.66121567e-01, 5.12767766e-01],
[9.20496389e-02, 6.29184167e-01, 2.78766194e-01],
[1.29649784e-02, 2.73576019e-01, 7.13459002e-01]])
关于python - 如何使用对数损失度量将 sgdclassifier 铰链损失与 Gridsearchcv 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55893734/
我是pytorch的新手。请问添加'loss.item()'有什么区别?以下2部分代码: for epoch in range(epochs): trainingloss =0 for
我有一个包含 4 列的 MySQL 表,如下所示。 TransactionID | Item | Amount | Date ------------------------------------
我目前正在使用 cocos2d、Box2D 和 Objective-C 为 iPad 和 iPhone 制作游戏。 每次更新都会发生很多事情,很多事情必须解决。 我最近将我的很多代码重构为几个小方法,
我一直在关注 Mixed Precision Guide .因此,我正在设置: keras.mixed_precision.set_global_policy(mixed_precision) 像这样
double lnumber = Math.pow(2, 1000); 打印 1.0715086071862673E301 我尝试过的事情 我尝试使用 BigDecimal 类来扩展这个数字: St
我正在尝试创建一个神经网络来近似函数(正弦、余弦、自定义...),但我在格式上遇到困难,我不想使用输入标签,而是使用输入输出。我该如何更改它? 我正在关注this tutorial import te
我有一个具有 260,000 行和 35 列的“单热编码”(全一和零)数据矩阵。我正在使用 Keras 训练一个简单的神经网络来预测一个连续变量。制作网络的代码如下: model = Sequenti
什么是像素级 softmax 损失?在我的理解中,这只是一个交叉熵损失,但我没有找到公式。有人能帮我吗?最好有pytorch代码。 最佳答案 您可以阅读 here所有相关内容(那里还有一个指向源代码的
我正在训练一个 CNN 架构来使用 PyTorch 解决回归问题,其中我的输出是一个 20 个值的张量。我计划使用 RMSE 作为模型的损失函数,并尝试使用 PyTorch 的 nn.MSELoss(
在每个时代结束时,我得到例如以下输出: Epoch 1/25 2018-08-06 14:54:12.555511: 2/2 [==============================] - 86
我正在使用 Keras 2.0.2 功能 API (Tensorflow 1.0.1) 来实现一个网络,该网络接受多个输入并产生两个输出 a 和 b。我需要使用 cosine_proximity 损失
我正在尝试设置很少层的神经网络,这将解决简单的回归问题,这应该是f(x) = 0,1x 或 f(x) = 10x 所有代码如下所示(数据生成和神经网络) 4 个带有 ReLu 的全连接层 损失函数 R
我正在研究在 PyTorch 中使用带有梯度惩罚的 Wasserstein GAN,但始终得到大的、正的生成器损失,并且随着时间的推移而增加。 我从 Caogang's implementation
我正在尝试在 TensorFlow 中实现最大利润损失。这个想法是我有一些积极的例子,我对一些消极的例子进行了采样,并想计算类似的东西 其中 B 是我的批处理大小,N 是我要使用的负样本数。 我是 t
我正在尝试预测一个连续值(第一次使用神经网络)。我已经标准化了输入数据。我不明白为什么我会收到 loss: nan从第一个纪元开始的输出。 我阅读并尝试了以前对同一问题的回答中的许多建议,但没有一个对
我目前正在学习神经网络,并尝试训练 MLP 以使用 Python 中的反向传播来学习 XOR。该网络有两个隐藏层(使用 Sigmoid 激活)和一个输出层(也是 Sigmoid)。 网络(大约 20,
尝试在 keras 中自定义损失函数(平滑 L1 损失),如下所示 ValueError: Shape must be rank 0 but is rank 5 for 'cond/Switch' (
我试图在 tensorflow 中为门牌号图像创建一个卷积神经网络 http://ufldl.stanford.edu/housenumbers/ 当我运行我的代码时,我在第一步中得到了 nan 的成
我正在尝试使用我在 Keras 示例( https://github.com/keras-team/keras/blob/master/examples/variational_autoencoder
我试图了解 CTC 损失如何用于语音识别以及如何在 Keras 中实现它。 我认为我理解的内容(如果我错了,请纠正我!)总体而言,CTC 损失被添加到经典网络之上,以便逐个元素(对于文本或语音而言逐个
我是一名优秀的程序员,十分优秀!