小编Vik*_*h B的帖子

xgboost正确使用auc指标

对于二进制分类问题,我的数据集略有不平衡,正负比为0.6。我最近从以下答案中了解了auc指标:https ://stats.stackexchange.com/a/132832/128229 ,并决定使用它。

但是我碰到了另一个链接http://fastml.com/what-you-wanted-to-know-about-auc/,该链接声称AUC-ROC对类不平衡不敏感,我们应该使用AUC来提高精度召回曲线。

xgboost文档尚不清楚他们使用哪个AUC,是否使用AUC-ROC?此外,该链接还提到,仅当您不关心概率而仅关心排名时,才应使用AUC。

但是,由于我使用的是binary:logistic目标,因此我认为我应该关注概率,因为我必须为预测设置阈值。

xgboost参数调整指南https://github.com/dmlc/xgboost/blob/master/doc/how_to/param_tuning.md 还建议了一种通过不平衡正样本和负样本并使用max_delta_step = 1处理类不平衡的替代方法。 。

因此有人可以解释,什么时候AUC优先于xgboost处理类不平衡的另一种方法。如果我使用的是AUC,我需要为预测设置的阈值是多少?或更笼统地说,我应该如何使用AUC来精确处理xgboost中的不平衡二进制分类问题?

编辑:

我还需要消除误报,而不是消除误报,除了binary:logistic目标之外,如何简单地改变阈值,我如何才能做到这一点?

auc xgboost

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

泛型 FromStr 的 Rust 错误转换,用不满足的特征边界解包错误

我正在使用thiserror箱来创建自定义错误类型

use thiserror::Error;

/// ParseTreeError enumerates all possible errors returned by this library.
#[derive(Error, Debug)]
pub enum ParseTreeError {
    /// Represents an empty source. For example, an empty text file being given
    /// as input to `count_words()`.
    #[error("Source contains no data")]
    EmptySource,

    /// Represents a failure to read from input.
    #[error("Read error")]
    ReadError,
}
Run Code Online (Sandbox Code Playgroud)
pub struct Parser <'a, T>
where
    T: FromStr + PartialEq
{
    token_stream: &'a str,
    marker: (usize, usize),
}

impl<'a, T> Parser<'a, T>
where
    T: …
Run Code Online (Sandbox Code Playgroud)

rust

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

Polars 获取列值最大的分组行

所以考虑这个片段

import polars as pl

df = pl.DataFrame({'class': ['a', 'a', 'b', 'b'], 'name': ['Ron', 'Jon', 'Don', 'Von'], 'score': [0.2, 0.5, 0.3, 0.4]})
df.groupby('class').agg([pl.col('score').max()])
Run Code Online (Sandbox Code Playgroud)

这给了我:

class score
  b     0.4
  a     0.5
Run Code Online (Sandbox Code Playgroud)

但我想要与最高分数相对应的组的整行。我可以与原始数据框进行连接,例如

sdf = df.groupby('class').agg([pl.col('score').max()])
sdf.join(df, on=['class', 'score'])
Run Code Online (Sandbox Code Playgroud)

要得到

class  score  name
  a     0.5    Jon
  b     0.4    Von
Run Code Online (Sandbox Code Playgroud)

有没有办法避免连接并将名称列包含在 groupby 聚合中?

python python-polars

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

在c ++中获取有序向量索引的有效方法

任何人都可以建议一种快速的方法来获得向量中每个元素的等级.我不需要对向量进行排序,但只有在向量排序时才获取每个元素的索引

例如:{40,20,10,30}应该给{3,1,0,2}

我是否能够获得加速,因为我实际上不必对数据进行排序?

c++ c++11

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

通过两组变量汇总

考虑一个简化的数据集(真正的数据集有更多的列和行):

df
    tp tf   weight
1  FWD RF 78.86166
2   MF LF 81.04566
3  DEF LF 80.70527
4  DEF LF 82.96071
5  DEF RF 78.42544
6   GK LF 79.37686
7  DEF RF 78.79928
8   MF RF       NA
9   MF RF 78.93815
10 DEF RF 80.00284
Run Code Online (Sandbox Code Playgroud)

我想用tp和tf组合的分组中位数来填充重量中的缺失值

我到现在为止尝试的是以下(我使用过dlpyr)

temp <- df %>% group_by(tp,tf) %>% summarise(mvalue = median(weight,na. rm = TRUE))
Run Code Online (Sandbox Code Playgroud)

这给了温度:

temp
Source: local data frame [6 x 3]
Groups: tp [?]

      tp     tf   mvalue
  <fctr> <fctr>    <dbl>
1 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

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

数据框中列表列的极坐标交集

import polars as pl

df = pl.DataFrame({'a': [[1, 2, 3], [8, 9, 4]], 'b': [[2, 3, 4], [4, 5, 6]]})
Run Code Online (Sandbox Code Playgroud)

所以给定数据框 df

    a           b
[1, 2, 3]   [2, 3, 4]
[8, 9, 4]   [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

我想要一个c列,它是a和b的交集

    a           b          c
[1, 2, 3]   [2, 3, 4]    [2, 3]
[8, 9, 4]   [4, 5, 6]     [4]
Run Code Online (Sandbox Code Playgroud)

我知道我可以将 apply 函数与 python 集交集一起使用,但我想使用极坐标表达式来实现。

python-polars

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

在spark(scala)中修改对象的RDD

我有:

val rdd1: RDD[myClass]
Run Code Online (Sandbox Code Playgroud)

它已经初始化,我检查时调试所有成员都有他们的默认值

如果我做

rdd1.foreach(x=>x.modifier())
Run Code Online (Sandbox Code Playgroud)

其中modifier是myClass的成员函数,它修改了一些成员变量

执行此操作后,如果我检查RDD内的值,则它们尚未被修改.

有人能解释一下这里发生了什么吗?是否可以确保在RDD内部修改值?

编辑:

class myClass(var id:String,var sessions: Buffer[Long],var avgsession: Long)  {
    def calcAvg(){
   // calculate avg by summing over sessions and dividing by legnth
   // Store this average in avgsession
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我这样做,avgsession属性不会更新

myrdd.foreach(x=>x.calcAvg())
Run Code Online (Sandbox Code Playgroud)

scala apache-spark rdd

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

Scikit 学习带有随机森林的分类数据

我正在尝试在 kaggle https://www.kaggle.com/c/titanic 中进行泰坦尼克号生存挑战

我在 R 方面没有经验,所以我将 Python 和 Scikit Learn 用于随机森林分类器

我看到很多人使用 scikit 学习将他们的多个级别的分类转换为虚拟变量。

我不明白这样做的意义,为什么我们不能将级别映射到一个数值并完成它。

我还看到有人做了以下事情:有一个具有三个级别的分类特征Pclass,他为此创建了 3 个虚拟变量,并删除了存活率最低的变量。我也无法理解这一点,虽然决策树不关心相关特征。

python random-forest scikit-learn

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

在scala中调用默认构造函数

我在scala中有一个类定义

class A(p1: Type1,p2: Type2){
    def this(p1: Type1){  //my constructor
       this()
       this.p1 = somevalue
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么区别

1. val a:A = new A //Is this same as A()??
2. val a:A = new A(v1,v2)
Run Code Online (Sandbox Code Playgroud)

怎么来1.给出编译时错误?但在"我的构造函数"中调用this()不会产生错误.

scala

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

使用具有Intellij想法的Subversion

我在Windows系统中安装了TortoiseSVN 1.8。我似乎无法使用Intellij Idea 14.14从存储库中签出

我配置了Intellij idea的设置,以正确给出svn.exe位置的路径

但是在结帐时显示:

无法从svn检出:无法将'C:\ Program'识别为内部或外部命令,可操作程序或批处理文件。

我还有其他东西吗?

svn intellij-idea

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

Java流排序不起作用

我有一个

HashMap<String,Integer> map 
Run Code Online (Sandbox Code Playgroud)

我希望按值按降序排序:

HashMap<String,Integer> topSorted = new HashMap<>();

//sort map in descending order
Stream<HashMap.Entry<String,Integer>> st = map.entrySet().stream();
st.sorted(Comparator.comparing((HashMap.Entry<String,Integer> e) -> e.getValue()).reversed())
        .forEach(e -> topSorted.put(e.getKey(),e.getValue()));
Run Code Online (Sandbox Code Playgroud)

但topsorted仍然与地图相同,根本没有进行排序

有人可以解释我做错了什么

java sorting java-8 java-stream

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

Rust Deref 与在内部类型上实现迭代器

这是一个包含向量的玩具结构

struct SizedVec {
    items: Vec<u32>,
    cap: usize,
}
Run Code Online (Sandbox Code Playgroud)

我想拥有迭代函数,SizedVec这样它们就可以像我直接迭代项目一样工作。

但是,我不知道我应该实现哪些性状:是IteratorIntoIterator就够了吗?文档中有很多特征 ,它们看起来有点复杂和乏味。

然后我看到我可以使用 deref coercion 免费实现DerefDerefMut获取所有这些功能:

果然,做完之后:

impl Deref for SizedVec {
    type Target = Vec<u32>;

    fn deref(&self) -> &Self::Target {
        &self.items
    }
}

impl DerefMut for SizedVec {
    fn deref_mut(&mut self) -> &mut Self::Target {
        &mut self.items
    }
}
Run Code Online (Sandbox Code Playgroud)

我可以使用我想要的所有迭代器。但是我想实现一个自定义的推送逻辑,但是DeRef已经给了我一个推送。但是根据文档我应该没问题,因为显然查找是按顺序为每种类型完成的

impl SizedVec {
    fn from_size(size: usize) -> Self {
        Self {
            items: vec![],
            cap: size, …
Run Code Online (Sandbox Code Playgroud)

iterator rust

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