如何平衡来自countmap表的数据集



我有这个数据集:

text               sentiment
randomstring        positive
randomstring        negative
randomstring        netrual
random              mixed

然后如果我运行countmap,我有:

"mixed"    -> 600
"positive" -> 2000
"negative" -> 3300
"netrual"  -> 780

我想从这个数据集中随机抽样,这样我就有了所有smallest class (mixed = 600)的记录和其他类别(positive=600, negative=600, neutral = 600)的相同数量的记录

我知道如何在pandas中这样做:

df_teste = [data.loc[data.sentiment==i]
.sample(n=int(data['sentiment']
.value_counts().nsmallest(1)[0]),random_state=SEED) for i in data.sentiment.unique()]
df_teste = pd.concat(df_teste, axis=0, ignore_index=True)

但是我很难在Julia中做到这一点。

注意:我不想硬编码哪个类是最低的,所以我正在寻找一个解决方案,从countmapfreqtable推断,如果可能的话。

你为什么想要一个countmapfreqtable解决方案似乎如果你想使用一个数据帧的结束?

这就是如何使用dataframe。jl(但没有StatsBase。jl和FreqTables。Jl,因为不需要它们):

julia> using Random
julia> using DataFrames
julia> df = DataFrame(text = [randstring() for i in 1:6680],
sentiment = shuffle!([fill("mixed", 600);
fill("positive", 2000);
fill("ngative", 3300);
fill("neutral", 780)]))
6680×2 DataFrame
Row │ text      sentiment
│ String    String
──────┼─────────────────────
1 │ R3W1KL5b  positive
2 │ uCCpNrat  ngative
3 │ fwqYTCWG  ngative
⋮   │    ⋮          ⋮
6678 │ UJiNrlcw  ngative
6679 │ 7aiNOQ1o  neutral
6680 │ mbIOIQmQ  ngative
6674 rows omitted
julia> gdf = groupby(df, :sentiment);
julia> min_len = minimum(nrow, gdf)
600
julia> df_sampled = combine(gdf) do sdf
return sdf[randperm(nrow(sdf))[1:min_len], :]
end
2400×2 DataFrame
Row │ sentiment  text
│ String     String
──────┼─────────────────────
1 │ positive   O0QsyrJZ
2 │ positive   7Vt70PSh
3 │ positive   ebFd8m4o
⋮   │     ⋮         ⋮
2398 │ neutral    Kq8Wi2Vv
2399 │ neutral    yygOzKuC
2400 │ neutral    NemZu7R3
2394 rows omitted
julia> combine(groupby(df_sampled, :sentiment), nrow)
4×2 DataFrame
Row │ sentiment  nrow
│ String     Int64
─────┼──────────────────
1 │ positive     600
2 │ ngative      600
3 │ mixed        600
4 │ neutral      600

如果你的数据非常大,你需要操作非常快,有更有效的方法来做到这一点,但在大多数情况下,这应该足够快,解决方案不需要任何额外的包。

相关内容

  • 没有找到相关文章