小编Qua*_*iat的帖子

sklearn 如何在精确召回曲线中选择阈值步骤?

我在示例乳腺癌数据集上训练了一个基本的 FFNN。对于结果,该precision_recall_curve函数提供了 416 个不同阈值的数据点。我的数据包含 569 个独特的预测值,据我了解 Precision Recall Curve 我可以应用 568 个不同的阈值并检查结果 Precision 和 Recall。

但是我该怎么做呢?有没有办法设置要测试的阈值数量sklearn?或者至少解释一下如何sklearn选择这些阈值?

我的意思是 417 应该足够了,即使对于更大的数据集,我只是好奇它们是如何被选中的。

# necessary packages
from sklearn.datasets import load_breast_cancer
import pandas as pd
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout

# load data
sk_data = load_breast_cancer(return_X_y=False)

# safe data in pandas
data = sk_data['data']
target = sk_data['target']
target_names = sk_data['target_names']
feature_names = sk_data['feature_names']
data = pd.DataFrame(data=data, columns=feature_names)

# …
Run Code Online (Sandbox Code Playgroud)

python precision scikit-learn precision-recall

12
推荐指数
1
解决办法
2197
查看次数

如何使用 gcf() 或 gca() 自定义 matplotlib 绘图?

我正在使用一个名为的包shap,它具有集成的绘图功能。不过我想调整一些东西,比如标签、图例、颜色、大小等。

显然是由于开发人员可以通过使用 plt.gcf() 实现这一点。

我这样称呼该图,这将给出一个图形对象,但我不确定如何使用它:

fig = shap.summary_plot(shap_values_DT, data_train,color=plt.get_cmap("tab10"), show=False)
ax = plt.subplot()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

更新/解决方案 最后,我通过执行以下操作将所有内容调整为我想要的:

shap.summary_plot(shap_values_DT, data_train, color=plt.get_cmap("tab10"), show=False)
fig = plt.gcf()
fig.set_figheight(12)
fig.set_figwidth(14)
ax = plt.gca()
ax.set_xlabel(r'durchschnittliche SHAP Werte $\vert\sigma_{ij}\vert$', fontsize=16)
ax.set_ylabel('Inputparameter', fontsize=16)
ylabels = string_latexer([tick.get_text() for tick in ax.get_yticklabels()])
ax.set_yticklabels(ylabels)
leg = ax.legend()
for l in leg.get_texts(): l.set_text(l.get_text().replace('Class', 'Klasse'))
plt.show()
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

customization plot matplotlib deep-learning shap

6
推荐指数
1
解决办法
3810
查看次数

如何在R-Markdown中使用R Chunk中的LaTeX代码?

我目前正在使用rmarkdown编写报告,因此我想在ar代码块中创建部分.我发现在cat()和results ="asis"的帮助下这是可能的.我的解决方案的问题是,我的R代码结果和代码没有像往常一样正确显示.

例如

---
title: "test"
output: pdf_document
---

```{r, results='asis'}
for (i in 1:10) {
  cat("\\section{Part:", i, "}")
  summary(X)
  $\alpha = `r X[1,i]`$  
}
```
Run Code Online (Sandbox Code Playgroud)

几乎可以解决问题,但这里仍有两个问题:

  • summary()的R输出显示得非常奇怪,因为我猜它被解释为LaTeX代码
  • 我不能在这个环境中使用LaTeX公式,所以如果我希望每个部分以一个方程结束,也可能使用R变量,这是不可能的

有人知道某些问题的解决方案,还是有一个解决方法来在循环中创建部分并在本节中包含R代码,R输出和LaTeX公式?或者至少其中一个是这样的?

我非常感谢各种建议

pdf r knitr r-markdown

5
推荐指数
1
解决办法
7541
查看次数

如何在循环中为 pytorch 神经网络中的层创建变量名称

我正在 PyTorch 中实现一个简单的前馈神经 newtork。但是我想知道是否有更好的方法来向网络添加灵活的层数?也许通过在循环中命名它们,但我听说那是不可能的?

目前我正在这样做

import torch
import torch.nn as nn
import torch.nn.functional as F

class Net(nn.Module):

    def __init__(self, input_dim, output_dim, hidden_dim):
        super(Net, self).__init__()
        self.input_dim = input_dim
        self.output_dim = output_dim
        self.hidden_dim = hidden_dim
        self.layer_dim = len(hidden_dim)
        self.fc1 = nn.Linear(self.input_dim, self.hidden_dim[0])
        i = 1
        if self.layer_dim > i:
            self.fc2 = nn.Linear(self.hidden_dim[i-1], self.hidden_dim[i])
            i += 1
        if self.layer_dim > i:
            self.fc3 = nn.Linear(self.hidden_dim[i-1], self.hidden_dim[i])
            i += 1
        if self.layer_dim > i:
            self.fc4 = nn.Linear(self.hidden_dim[i-1], self.hidden_dim[i])
            i += 1
        if self.layer_dim > i: …
Run Code Online (Sandbox Code Playgroud)

python neural-network torch pytorch

4
推荐指数
1
解决办法
2423
查看次数

如何将 L1 正则化添加到 PyTorch NN 模型?

在寻找在 PyTorch 模型中实现 L1 正则化的方法时,我遇到了这个问题,现在已经有 2 年历史了,所以我想知道这个主题是否有任何新内容?

我还发现了这种处理缺少的 l1 函数的最新方法。但是我不明白如何将它用于基本的神经网络,如下所示。

class FFNNModel(nn.Module):
    def __init__(self, input_dim, output_dim, hidden_dim, dropout_rate):
        super(FFNNModel, self).__init__()
        self.input_dim = input_dim
        self.output_dim = output_dim
        self.hidden_dim = hidden_dim
        self.dropout_rate = dropout_rate
        self.drop_layer = nn.Dropout(p=self.dropout_rate)
        self.fully = nn.ModuleList()
        current_dim = input_dim
        for h_dim in hidden_dim:
            self.fully.append(nn.Linear(current_dim, h_dim))
            current_dim = h_dim
        self.fully.append(nn.Linear(current_dim, output_dim))

    def forward(self, x):
        for layer in self.fully[:-1]:
            x = self.drop_layer(F.relu(layer(x)))
        x = F.softmax(self.fully[-1](x), dim=0)
        return x
Run Code Online (Sandbox Code Playgroud)

我希望在训练前简单地把它放在一边:

model = FFNNModel(30,5,[100,200,300,100],0.2)
regularizer = …
Run Code Online (Sandbox Code Playgroud)

python neural-network pytorch loss-function

3
推荐指数
1
解决办法
3086
查看次数

如何在 R 代码块中创建 R-markdown 部分?正确的代码显示

我目前正在使用 rmarkdown 编写报告,因此我想在 ar 代码块中创建部分。我发现在cat()results="asis"的帮助下这是可能的。我对这个解决方案的问题是,我的 R 代码结果和代码没有像往常一样正确显示。

例如

---
title: "test"
output: pdf_document
---

```{r, results='asis'}
for (i in 1:10) {
  cat("\\section{Part:", i, "}")
  print(summary(lm(data=X, X1~X2))
  $\alpha = `r X[1,i]`$  
}
```
Run Code Online (Sandbox Code Playgroud)

几乎可以解决问题,但这里仍然存在两个问题:

  • summary()的 R 输出显示非常奇怪,因为我猜它被解释为 LaTeX 代码
  • 我不能在这种环境中使用 LaTeX 公式,所以如果我希望每个部分都以一个方程结尾,该方程也可能使用 R 变量,这是不可能的

有人知道对此的解决方案,或者甚至有一种解决方法可以在循环中创建部分并在本部分中包含 R 代码、R 输出和 LaTeX 公式?

我非常感谢各种建议:)

pdf latex r knitr r-markdown

2
推荐指数
1
解决办法
1297
查看次数

禁止在 PyTorch 神经网络的 CrossEntropyLoss 中使用 Softmax

我知道当用作损失函数时,不需要nn.Softmax()在神经网络的输出层中使用函数。nn.CrossEntropyLoss

但是我需要这样做,有没有办法抑制 softmax 的实现使用nn.CrossEntropyLoss,而是nn.Softmax()在神经网络本身的输出层上使用?

动机:我使用shap包来分析之后的特征影响,我只能将我训练过的模型作为输入。然而,输出没有任何意义,因为我正在查看未绑定的值而不是概率。

示例:我想要的不是 -69.36 作为模型一类的输出值,而是 0 到 1 之间的值,所有类的总和为 1。由于事后我无法更改它,因此输出在训练期间就必须是这样的。

在此输入图像描述

python neural-network softmax cross-entropy pytorch

2
推荐指数
2
解决办法
4888
查看次数

用于可解释机器学习的 Shapley 值和 SHAP 之间的差异

关于芯片shap封装的论文给出了(4)中的 Shapley 值和(8)中显然的 SHAP 值的公式

我仍然不明白 Shapley 和 SHAP 值之间的区别。据我了解,对于 Shapley,我需要在每个可能的参数子集上重新训练我的模型,而对于 SHAP,我只是使用在所有参数上训练的基本模型。是这样吗?所以SHAP在计算上更容易?

machine-learning shap

1
推荐指数
1
解决办法
1486
查看次数