ANN: keras/sklearn的扩展性不佳

我不知道为什么我得到的结果扩展性不好。如您在下面的图片中所见,存在缩放问题。

enter image description here

enter image description here

存在两个问题:

  • 没有负值
  • 预测最大值时存在问题

我不知道为什么会出现这些问题。您有任何解决这些问题的想法吗?

如果您能提供帮助,我将非常感激

代码:

# 读取输入X = dataset.iloc[0:20000, [1, 4, 10]].values# 读取输出y = dataset.iloc[0:20000, 5].values# 将数据集拆分为训练集和测试集from sklearn.cross_validation import train_test_splitX_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)# 输出矩阵转换y_train = y_train.reshape(-1, 1)y_test = y_test.reshape(-1, 1)# 特征缩放from sklearn.preprocessing import StandardScalersc = StandardScaler()X_train = sc.fit_transform(X_train)X_test = sc.transform(X_test)y_train = sc.fit_transform(y_train) y_test = sc.transform(y_test)# 导入Keras库和包from keras.models import Sequentialfrom keras.layers import Dense# 构建模型classifier = Sequential()classifier.add(Dense(activation="sigmoid", input_dim=3, units=64, kernel_initializer="uniform"))classifier.add(Dense(activation="sigmoid", units=32, kernel_initializer="uniform"))classifier.add(Dense(activation="sigmoid", units=16, kernel_initializer="uniform"))classifier.add(Dense(activation="sigmoid", units=1, kernel_initializer="uniform"))classifier.compile(optimizer='adam', loss='mean_squared_error', metrics=['accuracy'])# 将ANN拟合到训练集results = classifier.fit(X_train, y_train, batch_size=16, epochs=25)# 预测测试集结果y_pred = classifier.predict(X_test)

回答:

如果您的蓝色曲线显示的是初始输出y,而橙色曲线显示的是模型的输出(您并未详细说明这一点…),那么这里没有什么奇怪的…

预测最大值时存在问题

仔细查看您的代码,您会发现您实际上并没有将初始y输入到网络中,而是输入了其缩放版本,即sc.transform()的结果;因此,您的输出也是缩放的,您应该使用inverse_transform方法将其转换回初始比例:

y_final = sc.inverse_transform(y_pred)

顺便说一下,现在这样做是可以的,但通常情况下,使用同一个缩放器(这里是sc)来处理两个不同的数据集(即您的X和y)并不是一个好主意 – 您应该定义两个不同的缩放器,例如sc_Xsc_y

没有负值

这是因为您在输出层中使用的sigmoid函数只能在[0, 1]之间取正值,所以您可能需要将其更改为其他能够提供所需值范围的函数(linear是一个候选),并且可能还需要将其他sigmoid函数更改为tanh

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注