帮助在 pythin 中启动 ML 项目(新手)

数据挖掘 机器学习 Python 神经网络
2022-02-25 22:08:11

我正在开始一个机器学习项目(为了好玩!),但我不知道从哪里开始......我对 ML 相当陌生,所以任何提示都值得赞赏。

我有一个相对较大的数据集,其中每个输入都是大约 300 个整数(主要是零)的列表。输出是 20 个整数的列表。目标是在给定随机输入的情况下预测输出(显然)。我不确定什么是最好的方法。我已经开始阅读一些神经网络,这似乎是解决此类问题的好方法,但似乎有一系列不同的激活等(不确定它实际上是如何调用的)所以我不太确定该怎么办。

关于研究方向的任何提示?

非常感谢!

1个回答

如果您有多个输出列(目标),您可以选择有限的模型,因为大多数模型预测一个输出列请参阅sklearn 文档以获得良好的概述。本质上,您处理的是多输出问题。

用于回归的 sklearn 模型只是旨在分别预测每个输出。RegressionChain考虑到先前的预测,尝试一个接一个地连续预测一个目标值文档

可以使用MultiOutputRegressor 将多输出回归支持添加到任何回归器。该策略包括为每个目标拟合一个回归器。由于每个目标仅由一个回归量表示,因此可以通过检查其对应的回归量来获得有关目标的知识。由于 MultiOutputRegressor 适合每个目标一个回归器,它不能利用目标之间的相关性。

Regressor 链(参见 RegressorChain)类似于 ClassifierChain,它是一种将多个回归组合成单个多目标模型的方法,该模型能够利用目标之间的相关性。

如果您想尝试神经网络,您可以使用 Keras 的“功能 API”,它允许您定义多个输出(列)。在这里找到一个最小的例子简而言之,您需要定义一些输入(X矩阵,又称解释变量),您需要分别定义所有输出输入和输出可以输入到模型定义和模型fit语句中,如下所示。

# Input and model architecture
Input_1=Input(shape=(13, ))
x = Dense(1024, activation='relu', kernel_regularizer=regularizers.l2(0.05))(Input_1)
x = Dense(512, activation='relu', kernel_regularizer=regularizers.l2(0.05))(x)
x = Dense(256, activation='relu', kernel_regularizer=regularizers.l2(0.05))(x)
x = Dense(128, activation='relu', kernel_regularizer=regularizers.l2(0.05))(x)
x = Dense(8, activation='relu', kernel_regularizer=regularizers.l2(0.05))(x)

# Outputs
out1 = Dense(1)(x)
out2 = Dense(1)(x)

# Compile/fit the model
model = Model(inputs=Input_1, outputs=[out1,out2])
model.compile(optimizer = "rmsprop", loss = 'mse')

# Add actual data here in the fit statement
model.fit(train_data, [train_targets,train_targets2], epochs=500, batch_size=4, verbose=0, validation_split=0.2)