对我来说,这听起来像是一个分类问题?您正在尝试根据您的一些“变量”(其中 39 个?)对模式进行分类,如果首先是这种情况R2确实不是正确的衡量标准。根据您的类的分布,您可能希望查看诸如准确性之类的度量,AUROC或一个F1-分数。
话虽如此,我个人在 SciKit 学习中实现的神经网络方面从来没有任何好的经验,如果你确实想使用神经网络,我可以看看 Keras 之类的东西,一个相当简单的神经网络库。作为神经网络的一般规则,您不需要实际创建预测变量的所有组合,从技术上讲,这项工作(给定足够的隐藏层)将由网络完成。对于您的任务,据我所知,一个简单的 MLP 可以做到。来自 tensorflow.keras 导入层的代码示例
model = tf.keras.Sequential()
model.add(layers.Dense(64, activation='relu'))
model.add(layer.Dropout(0.5))
model.add(layers.Dense(64, activation='relu'))
model.add(layer.Dropout(0.5))
model.add(layers.Dense(10, activation='softmax'))
model.compile(optimizer=tf.keras.optimizers.Adam(0.01),
loss='categorical_crossentropy',
metrics=['accuracy'])
但是,据我所知,这似乎是相当结构化的数据,也可以使用梯度提升树或其他方法进行分析。你可能也想看看那些,可以得到更好的结果。