【发布时间】:2018-02-25 17:32:48
【问题描述】:
我已经用 R 实现了简单的神经网络,但这是我第一次用 Keras 这样做,所以不胜感激。
我在 Keras 中开发了一个神经网络函数来预测汽车销量(数据集在 here 可用)。 CarSales 是因变量。
据我所知,Keras 用于开发用于分类而非回归的神经网络。到目前为止,在我看到的所有示例中,输出都在 0 和 1 之间。
这是我开发的代码,你会看到我在输出中使用了“sigmoid”函数:
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense
from tensorflow.python.keras.wrappers.scikit_learn import KerasRegressor
import numpy as np
import pandas as pd
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import MinMaxScaler
import os;
path="C:/Users/cars.csv"
os.chdir(path)
os.getcwd()
#Variables
dataset=np.loadtxt("cars.csv", delimiter=",")
x=dataset[:,0:5]
y=dataset[:,5]
y=np.reshape(y, (-1,1))
scaler = MinMaxScaler()
print(scaler.fit(x))
print(scaler.fit(y))
xscale=scaler.transform(x)
yscale=scaler.transform(y)
model = Sequential()
model.add(Dense(12, input_dim=5, kernel_initializer='normal', activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
model.summary()
model.compile(loss='mse', optimizer='adam', metrics=['mse','mae','mape','cosine','accuracy'])
model.fit(xscale, yscale, epochs=150, batch_size=50, verbose=1, validation_split=0.2)
如您所见,我使用 MaxMinScaler 将变量和输出绑定在 0 和 1 之间。
当我生成 150 个 Epoch 时,mean_squared_error 和 mean_absolute_error 等值非常低。然而,mean_absolute_percentage_error 相当高 - 但我怀疑这不是评估 sigmoid 输出时使用的好指标。
将输出变量限制在 0 和 1 之间,然后运行模型是尝试使用神经网络预测区间变量的可接受方式吗?
【问题讨论】:
标签: python tensorflow neural-network keras