我有一个如下所示的数据集(假设 中有 4 个类别Clicked,head(10)仅显示 2 个类别):
Rank Clicked
0 2.0 Cat4
1 2.0 Cat4
2 2.0 Cat4
3 1.0 Cat1
4 1.0 Cat4
5 2.0 Cat4
6 2.0 Cat4
7 3.0 Cat4
8 5.0 Cat4
9 5.0 Cat4
Run Code Online (Sandbox Code Playgroud)
这是返回该图的代码:
eee = (df.groupby(['Rank','Clicked'])['Clicked'].count()/df.groupby(['Rank'])['Clicked'].count())
eee.unstack().plot.bar(stacked=True)
plt.legend(['Cat1','Cat2','Cat3','Cat4'])
plt.xlabel('Rank')
Run Code Online (Sandbox Code Playgroud)
有没有办法用seaborn(或matplotlib)而不是pandas绘图功能来实现这一点?我尝试了几种方法,包括运行seaborn代码和预处理数据集以使其格式正确,但没有成功。
正如标题所说,我想知道sklearnGroupKFold和GroupShuffleSplit.
两者都针对具有组 ID 的数据进行训练-测试分割,因此组不会在分割中分离。我检查了每个函数的一个训练/测试集,它们看起来都做了很好的分层,但如果有人可以确认所有分割都这样做,那就太好了。
我对两者进行了 10 次分割测试:
gss = GroupShuffleSplit(n_splits=10, train_size=0.8, random_state=42)
for train_idx, test_idx in gss.split(X,y,groups):
print("train:", train_idx, "test:", test_idx)
train: [ 1 2 3 4 5 11 12 13 14 15 16 17 19 20] test: [ 0 6 7 8 9 10 18]
train: [ 1 2 3 4 5 6 7 8 9 10 12 13 14 18 19 20] test: [ 0 11 15 16 17]
train: [ 0 1 3 …Run Code Online (Sandbox Code Playgroud)