使用 sklearn 离散化连续目标变量

Discretize continuous target variable using sklearn

我必须将连续目标变量离散化为至少 5 个 bin,以便使用 sklearn 库降低分类模型的复杂性

为了做到这一点,我使用了 KBinsDiscretizer,但我不知道如何将数据集拆分成平衡部分,因为我已经离散化了目标变量。 这是我的代码:

X = df.copy()
y = X.pop('shares') 

# scaling the dataset so all data in the same range
scaler = preprocessing.MinMaxScaler()
X = scaler.fit_transform(X)

discretizer = preprocessing.KBinsDiscretizer(n_bins=5,  encode='ordinal', strategy='uniform')
y_discretized = discretizer.fit_transform(y.values.reshape(-1, 1))

# is this correct?
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, shuffle=True, stratify=y_discretized) 

为了完整起见,我正在尝试重新创建一个比以下所示模型更简单的模型:[1] K. Fernandes、P. Vinagre 和 P. Cortez。用于预测在线新闻流行度的主动智能决策支持系统。 2015 年第 17 届 EPIA 论文集 - 葡萄牙人工智能会议,9 月,葡萄牙科英布拉

您的 y_trainy_testy 的一部分,它具有(看起来)原始的连续值。所以你最终要拟合多类分类模型,可能有 lots 个不同的 类,这可能会导致崩溃。

我假设你想要的是

X_train, X_test, y_train, y_test = train_test_split(X, y_discretized, test_size=0.33, shuffle=True, stratify=y_discretized)

将连续目标离散化以将回归转化为分类是否是另一个站点的主题,参见例如https://datascience.stackexchange.com/q/90297/55122