缩减神经网络(ANN)的输出以进行多元回归吗?

时间:2018-07-26 20:05:58

标签: python neural-network scaling

我在机器学习和神经网络方面没有任何背景。我在python中有一个panda数据框,其中一个变量是其他自变量的未知函数:output = func(input1,input2,...)。因此,当我绘制输出与任何输出的关系图时,会得到散点图,而输出和输入之间没有任何明确的关系。因此,我使用ANN尝试找到这种关系。

我有以下代码:

from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler, MinMaxScaler, Normalizer, RobustScaler
from sklearn.neural_network import MLPRegressor    

X = Data[['input1','input2','input3','input4','input5','input6']].values
y = Data[['output']].values  

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.15)

scaler = StandardScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)  
X_test_scaled = scaler.transform(X_test)  

mlp = MLPRegressor(alpha = 1e-5, hidden_layer_sizes = (50,50,50), max_iter = 5000)
mlp.fit(X_train_scaled,y_train)
predictions = mlp.predict(X_test_scaled)
plt.scatter(X_train[:,0], y_train, color = 'green') %column 0 refers to input1
plt.scatter(X_test[:,0], y_test, marker='^', color = "blue")
plt.scatter(X_test[:,0], predictions, marker='x',  color = "red")

代码的输出是输出随着输入1(以及所有其他输入)的变化而变化的方式:

enter image description here

绿点显示训练数据集,蓝色三角形显示测试数据集,红色标记显示我从人工神经网络得到的结果。

考虑到我是新手并且代码相对简单,因此该图还不错。在该图中,我在x轴上使用了未缩放(或缩减)的输入,在y轴上使用了缩放的预测。我的问题是我是否应该缩减预测。 如果我使用缩放数据作为输入,则用红色标记表示的数据将出现水平偏移,并且该图看起来不正确。 如果尝试缩小预测范围,在这种情况下会出现错误,因为我有多个输入而只有一个输出,因此尺寸不匹配。如果仅使用一个输入变量,则尺寸匹配且没有任何错误,但是图中的红色标记在垂直方向上发生了明显的偏移。

即使我不缩小预测范围(嗯,就像我说的那样,即使我愿意,在这种情况下也无法做到这一点),仍然会有一些红色标记不在预期范围之内。

在这里,关于缩小(或一般而言)应该做些什么,以便获得比图中所示更好的结果? 我也想知道哪些指标可用于确定ANN的回归问题性能,所以我不必目视检查图(我有太多的数据和图)

0 个答案:

没有答案