qq_40428140 2018-06-27 11:24 采纳率: 0%
浏览 10304
已结题

用keras搭建BP神经网络对数据集进行回归预测,效果和同学的相比很差,麻烦大神指点。新手小白。。。

数据集是csv文件,一共十三列,十几万行,第十三列是要预测的值。
试过很多种方法(都是百度的),包括更改网络层数、 节点数,学习率……,效果都没什么提升
不知道问题出在哪里,请大神指点。

import numpy as np
import keras as ks
from keras.models import Sequential
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from keras.layers import Dense, Activation,Dropout

x_yuan = np.loadtxt(open("shaixuandata.csv","rb"),\
usecols=(range(12)),delimiter=",",skiprows=1)
x = preprocessing.scale(x_yuan)
y = np.loadtxt(open("shaixuandata.csv","rb"),\
usecols=(12),delimiter=",",skiprows=1)
x_train, x_test, y_train, y_test = train_test_split(\
x, y, test_size=0.25, random_state=43)

model = Sequential()
model.add(Dense(units=30, input_dim=12))
model.add(Activation('relu'))
model.add(Dropout(0.1))
model.add(Dense(units=1))
model.add(Activation('linear'))

ks.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1, \
patience=10, verbose=0, mode='auto', epsilon=0.0001, cooldown=0, min_lr=0)
sgd = ks.optimizers.SGD(lr=0.001, clipnorm=1.,decay=1e-6, momentum=0.9)
model.compile(optimizer='sgd', loss='mae', metrics=['mae'])
model.fit(x_train, y_train, batch_size=30, epochs=3, callbacks=None, \
validation_data=(x_test,y_test), shuffle=True, class_weight=None, \
sample_weight=None, initial_epoch=0)

predict = model.predict(x_test)
sum = 0
for i in range(len(y_test)):
sum = sum+(y_test[i]-predict[i])**2
mse = sum/len(y_test)
print(mse)

训练的结果是这样的,老实说训练结果太差

  • 写回答

1条回答

  • qq_40428140 2018-06-27 11:27
    关注

    import numpy as np
    import keras as ks
    from keras.models import Sequential
    from sklearn import preprocessing
    from sklearn.model_selection import train_test_split
    from keras.layers import Dense, Activation,Dropout

    x_yuan = np.loadtxt(open("shaixuandata.csv","rb"),\
    usecols=(range(12)),delimiter=",",skiprows=1)
    x = preprocessing.scale(x_yuan)
    y = np.loadtxt(open("shaixuandata.csv","rb"),\
    usecols=(12),delimiter=",",skiprows=1)
    x_train, x_test, y_train, y_test = train_test_split(\
    x, y, test_size=0.25, random_state=43)

    model = Sequential()
    model.add(Dense(units=30, input_dim=12))
    model.add(Activation('relu'))
    model.add(Dropout(0.1))
    model.add(Dense(units=1))
    model.add(Activation('linear'))

    ks.callbacks.ReduceLROnPlateau(monitor='val_loss', factor=0.1, \
    patience=10, verbose=0, mode='auto', epsilon=0.0001, cooldown=0, min_lr=0)
    sgd = ks.optimizers.SGD(lr=0.001, clipnorm=1.,decay=1e-6, momentum=0.9)
    model.compile(optimizer='sgd', loss='mae', metrics=['mae'])
    model.fit(x_train, y_train, batch_size=30, epochs=3, callbacks=None, \
    validation_data=(x_test,y_test), shuffle=True, class_weight=None, \
    sample_weight=None, initial_epoch=0)

    predict = model.predict(x_test)
    sum = 0
    for i in range(len(y_test)):
    sum = sum+(y_test[i]-predict[i])**2
    mse = sum/len(y_test)
    print(mse)

    代码是这样的

    评论

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?