我必须将一个连续的目标变量离散到至少5个桶中,以降低使用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年EPIA第17届会议记录-葡萄牙人工智能会议,9月,葡萄牙科英布拉
发布于 2022-01-23 20:35:14
您的y_train和y_test是y的一部分,它具有(似乎)原始的连续值。所以你最终会拟合多类分类模型,可能有很多不同的类,这很可能导致崩溃。
我想你想要的是
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
https://stackoverflow.com/questions/70821138
复制相似问题