解决不平衡的数据集问题可以使用过采样和欠采样的方法来平衡数据集。以下是一个示例代码,展示如何使用随机欠采样方法来平衡数据集:
import pandas as pd
from imblearn.under_sampling import RandomUnderSampler
# 读取数据集
data = pd.read_csv("data.csv")
# 查看不同类别的数量
class_counts = data['label'].value_counts()
print("原始数据集中各类别数量:")
print(class_counts)
# 定义欠采样器
rus = RandomUnderSampler(random_state=0)
# 进行欠采样
X_resampled, y_resampled = rus.fit_resample(data.drop('label', axis=1), data['label'])
# 将欠采样后的数据转化为DataFrame
resampled_data = pd.DataFrame(X_resampled, columns=data.columns[:-1])
resampled_data['label'] = y_resampled
# 查看欠采样后不同类别的数量
resampled_class_counts = resampled_data['label'].value_counts()
print("欠采样后各类别数量:")
print(resampled_class_counts)
# 保存欠采样后的数据集
resampled_data.to_csv("balanced_data.csv", index=False)
上述代码使用了imblearn
库中的RandomUnderSampler
类来进行欠采样。首先,读取原始数据集,并使用value_counts()
方法计算不同类别的数量。然后,定义了一个RandomUnderSampler
对象,并调用fit_resample()
方法对数据集进行欠采样。最后,将欠采样后的数据保存到balanced_data.csv
文件中。
请注意,这只是一个示例代码,并且假设数据集已经按类别标记,并保存在一个名为data.csv
的CSV文件中。您需要根据您的实际数据集进行适当的修改。
上一篇:不平衡的数据集模型只预测一类