gpt4 book ai didi

python - 使用 scikit-learn 进行子采样 + 分类

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:49 25 4
gpt4 key购买 nike

我正在使用 Scikit-learn 进行二元分类任务……并且我有:0 类:有 200 个观察值第 1 类:有 50 个观察值

而且因为我有一个不平衡的数据..我想随机抽取多数类的子样本,其中观察的数量将与少数类相同,并希望使用新获得的数据集作为分类器的输入..二次采样和分类的过程可以重复多次..我主要在Ami Tavory的帮助下编写了以下二次采样代码

docs_train=load_files(rootdir,categories=categories, encoding='latin-1')

X_train = docs_train.data
y_train = docs_train.target

majority_x,majority_y=x[y==0,:],y[y==0] # assuming that class 0 is the majority class
minority_x,minority_y=x[y==1,:],y[y==1]

inds=np.random.choice(range(majority_x.shape[0]),50)
majority_x=majority_x[inds,:]
majority_y=majority_y[inds]

它就像一个魅力,但是,在处理 majority_x 和 majority_y 结束时,我希望能够用新的较小的集合替换代表 X_train、y_train 中的 class0 的旧集合,以便按如下方式传递给分类器或管道:

pipeline = Pipeline([
('vectorizer', CountVectorizer( tokenizer=tokens, binary=True)),
('classifier',SVC(C=1,kernel='linear')) ])

pipeline.fit(X_train, y_train)

为了解决这个问题,我做了什么:因为结果数组是 numpy 数组,并且因为我是整个领域的新手而且我真的非常努力学习..我试图将两个结果数组组合在一起 majority_x+minority_x 以形成训练数据我想要..我不能给出一些错误,直到现在我一直在努力解决这些错误......但即使我可以..我怎样才能保留他们的索引,以便 majority_y 和 minority_y 也为真!

最佳答案

在处理 majority_x 和 minority_y 之后,您可以将您的训练集与

X_train = np.concatenate((majority_x,minority_x))
y_train = np.concatenate((majority_y,minority_y))

现在 X_train 和 y_train 将首先包含所选的 y=0 样本,然后是 y=1 样本。

关于您的相关问题的想法:通过创建一个长度为多数样本数量的随机置换向量来选择多数样本。然后选择该向量的前 50 个索引,然后选择接下来的 50 个,依此类推。当您完成该向量时,每个样本将只被选择一次。如果你想要更多的迭代或者剩余的置换向量太短,你可以求助于随机选择。

正如我在评论中提到的,您可能还想在 np.random.choice 中添加参数“replace=False”,如果您想防止在一次迭代中多次使用相同的样本。

关于python - 使用 scikit-learn 进行子采样 + 分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35106112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com