【发布时间】:2017-04-25 08:17:55
【问题描述】:
这是一个机器学习项目。
我有一个数据框,其中 5 列作为特征,1 列作为标签(图 A)。
我想从每个标签中随机删除 2 行。 所以,因为有 12 行(每个标签 4 行);我最终会得到 6 行(每个标签 2 行)(图 B)。
我该怎么做?仅使用 numpy 会更容易吗?
图A
图B
这是我的代码:
# THIS IS FOR FIGURE A
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.rand(12, 5))
label=np.array([1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3])
df['label'] = label
df.index=['s1', 's1', 's1', 's1', 's2', 's2', 's2', 's2', 's3', 's3', 's3', 's3']
df
#THIS IS MY ATTEMPT FOR FIGURE B
dfs = df.sample(n=2)
dfs
【问题讨论】:
-
我认为 sklearn 有 kfold 分层抽样。在使用 pandas 之前,请考虑留在 sklearn 中。 Sklearn 有很多内置函数来处理这样的事情。你当然可以使用 pandas,但除非你必须这样做,否则不要使用它。
-
我想绘制在增加样本(行)数量时准确性如何变化的图。所以删除的行将被发送到分类器和交叉验证。因此,一种选择是使用 Pandas,另一种选择是使用 numpy。你知道如何使用数组来处理 numpy 吗?
标签: python python-3.x pandas numpy machine-learning