歡迎您光臨本站 註冊首頁

利用keras使用神經網絡預測銷量操作

←手機掃碼閱讀     techdo @ 2020-07-08 , reply:0

keras非常方便。不解釋,直接上實例。

數據格式如下:

  序號 天氣 是否週末  是否有促銷  銷量  1  壞  是  是  高  2  壞  是  是  高  3  壞  是  是  高  4  壞  否  是  高  5  壞  是  是  高  6  壞  否  是  高  7  壞  是  否  高  8  好  是  是  高  9  好  是  否  高  10 好  是  是  高  11 好  是  是  高  12 好  是  是  高  13 好  是  是  高  14 壞  是  是  低  15 好  否  是  高  16 好  否  是  高  17 好  否  是  高  18 好  否  是  高  19 好  否  否  高  20 壞  否  否  低  21 壞  否  是  低  22 壞  否  是  低  23 壞  否  是  低  24 壞  否  否  低  ......

 

代碼如下:

  #-*- coding: utf-8 -*-  #使用神經網絡算法預測銷量高低  import pandas as pd  #參數初始化  inputfile = 'data/sales_data.xls'  data = pd.read_excel(inputfile, index_col = u'序號') #導入數據    #數據是類別標籤,要將它轉換為數據  #用1來表示“好”、“是”、“高”這三個屬性,用0來表示“壞”、“否”、“低”  data[data == u'好'] = 1  data[data == u'是'] = 1  data[data == u'高'] = 1  data[data != 1] = 0  x = data.iloc[:,:3].as_matrix().astype(int)  y = data.iloc[:,3].as_matrix().astype(int)  print x  from keras.models import Sequential  from keras.layers.core import Dense, Activation,Dropout    model = Sequential()  model.add(Dense(64, input_shape=(3,)))  model.add(Dropout(0.5))  model.add(Dense(64, activation='relu'))  model.add(Dropout(0.5))  model.add(Dense(1, activation='sigmoid'))    model.compile(loss='binary_crossentropy',         optimizer='rmsprop',         metrics=['accuracy'])  #編譯模型。由於我們做的是二元分類,所以我們指定損失函數為binary_crossentropy,以及模式為binary  #另外常見的損失函數還有mean_squared_error、categorical_crossentropy等,請閱讀幫助文件。  #求解方法我們指定用adam,還有sgd、rmsprop等可選    model.fit(x, y, nb_epoch = 1000, batch_size = 10) #訓練模型,學習一千次  yp = model.predict_classes(x).reshape(len(y)) #分類預測

 

  10/34 [=======>......................] - ETA: 0s - loss: 0.3723 - acc: 0.8000  34/34 [==============================] - 0s - loss: 0.4470 - acc: 0.7647     Epoch 1000/1000

 

結果為經過1000輪訓練準確率為0.7647.

補充知識:利用Keras搭建神經網絡進行迴歸預測

我就廢話不多說了,大家還是直接看代碼吧~

  from keras.datasets import boston_housing  from keras import models  from keras import layers     (X_train, y_train), (X_test, y_test) = boston_housing.load_data()#加載數據     #對數據進行標準化預處理,方便神經網絡更好的學習  mean = X_train.mean(axis=0)  X_train -= mean  std = X_train.std(axis=0)  X_train /= std  X_test -= mean  X_test /= std     #構建神經網絡模型  def build_model():    #這裡使用Sequential模型    model = models.Sequential()    #進行層的搭建,注意第二層往後沒有輸入形狀(input_shape),它可以自動推導出輸入的形狀等於上一層輸出的形狀    model.add(layers.Dense(64, activation='relu',input_shape=(X_train.shape[1],)))    model.add(layers.Dense(64, activation='relu'))    model.add(layers.Dense(1))    #編譯網絡    model.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])    return model     num_epochs = 100  model = build_model()  model.fit(X_train, y_train,epochs=num_epochs, batch_size=1, verbose=0)  predicts = model.predict(X_test)

 

在實際操作中可以用自己的數據進行測試,最終預測出的predicts,可以利用迴歸評價指標和y_test進行模型效果的評價。


   


[techdo ] 利用keras使用神經網絡預測銷量操作已經有212次圍觀

http://coctec.com/docs/python/shhow-post-241803.html