python - 欠采样numpy数组
问题描述
我有一个包含 10192 个“0”样本和 2512 个“1”样本的火车。
我在片场应用了 PCA 来降低维度。
我想对这个 numpy 数组进行欠采样。
这是我的代码:
df = read_csv("train.csv")
X = df.drop(['label'], axis = 1)
y = df['label']
from sklearn.model_selection import train_test_split
X_train, X_validation, y_train, y_validation = train_test_split(X, y, test_size = 0.2, random_state = 42)
model = PCA(n_components = 19)
model.fit(X_train)
X_train_pca = model.transform(X_train)
X_validation_pca = model.transform(X_validation)
X_train = np.array(X_train_pca)
X_validation = np.array(X_validation_pca)
y_train = np.array(y_train)
y_validation = np.array(y_validation)
如何从 X_train numpy 数组中对“0”类进行欠采样?
解决方案
将 csv 导入后尝试df
:
# class count
count_class_0, count_class_1 = df.label.value_counts()
# separate according to `label`
df_class_0 = df[df['label'] == 0]
df_class_1 = df[df['label'] == 1]
# sample only from class 0 quantity of rows of class 1
df_class_0_under = df_class_0.sample(count_class_1)
df_test_under = pd.concat([df_class_0_under, df_class_1], axis=0)
df_test_under
然后对数据框执行所有计算。
或者使用RandomUnderSampler
:
from imblearn.under_sampling import RandomUnderSampler
rus = RandomUnderSampler(random_state=0)
X_resampled, y_resampled = rus.fit_resample(X, y)
推荐阅读
- javascript - 使用 Plotly.js 和 Node.js 获取和绘制数据
- apache-kafka - Kstream 的成本与 KTable 相对于状态存储的成本
- c++ - 构建对象数组是如何工作的?我坚持这个例子
- c# - 如何将嵌套的父节点添加到现有节点
- android - 使用 WebRTC Android 回声
- php - PHP 变化?从网址到 /
- c# - 为什么我以后不能通过 if 语句向我的字符串变量添加一个值并在 C# 中运行输出代码?
- sql-server - 按一列有效地对查询进行分组,取另一列的最大值和来自同一行的第三列作为最大值列
- security - KRACK 补丁如何发挥作用
- python - 使用python在网页上单击“加载更多”