![](/img/trans.png)
[英]How to feed multiple NumPy arrays to a deep learning network in Keras?
[英]How can i feed multiple arrays to a keras machine learning algorithm?
我打算制作一個保費預測器,它根據多種因素(包括性別、性別、BMI 等)來預測您的保險費(總共 6 個)我有數據,但我不知道如何養活多個數組到它。 這是代碼-
import tensorflow as tf
import numpy as np
from tensorflow import keras
import pandas as pd
a=0
file=pd.read_csv(r"""C:\Users\lavni\OneDrive\Desktop\proj.csv""",sep=',')
Age=pd.DataFrame(file,columns=['age']).to_numpy()
Sex=pd.DataFrame(file,columns=['sex']).to_numpy()
BMI=pd.DataFrame(file,columns=['bmi']).to_numpy()
Children=pd.DataFrame(file,columns=['children']).to_numpy()
Smoker=pd.DataFrame(file,columns=['smoker']).to_numpy()
Region=pd.DataFrame(file,columns=['region']).to_numpy()
Charges=pd.DataFrame(file,columns=['charges']).to_numpy()
Data=[Age,Sex,BMI,Children,Smoker,Region]
model=keras.Sequential([keras.layers.Dense(units=6,input_shape=[6])])
model.compile(optimizer='sgd',loss='mean_squared_error')
model.fit(Data,Charges)
運行它后,它給了我以下錯誤:
ValueError: Layer sequential expects 1 inputs, but it received 6 input tensors. Inputs received: [<tf.Tensor 'IteratorGetNext:0' shape=(None, 1) dtype=int64>, <tf.Tensor 'IteratorGetNext:1' shape=(None, 1) dtype=string>, <tf.Tensor 'IteratorGetNext:2' shape=(None, 1) dtype=float32>, <tf.Tensor 'IteratorGetNext:3' shape=(None, 1) dtype=int64>, <tf.Tensor 'IteratorGetNext:4' shape=(None, 1) dtype=string>, <tf.Tensor 'IteratorGetNext:5' shape=(None, 1) dtype=string>]
我理解這個錯誤,對它進行了一些研究,我發現它需要是一個元組,但盡管改變了它,它仍然給出了同樣的錯誤。
提前致謝。
這里有幾個問題,首先,不要使用pd.DataFrame
從文件中加載單列數據(1d 數據)。 如果您只需要讀取pd.read_csv
,請使用pd.read_csv
,可選擇使用squeeze
參數。
接下來,您不能使用 python 列表來對多個輸入進行分組,您必須使用元組,如下所示:
Data = (a,b,c,d) # Not [a,b,c,d]
否則,keras 模型將嘗試提供您的數據集a
然后b
等等,而不是[a[0], b[0], ...]
。 這似乎是你的目標。
接下來,在您的特定情況下,您似乎不需要多輸入 keras 模型。 您所需要的只是第一層上的有效input_shape
。 這就是模型抱怨的原因。 它需要一個輸入,而您正試圖插入其中的 6 個。 將輸入轉換為單個數組,如
data = dataframe.to_numpy() #dataframe must have 6 columns!
targets = targets.to_numpy() #single column
...
model.fit(data,targets)
使用此信息更新您的代碼,並在出現其他問題時詢問我。
干杯!
用這種方式寫:
model = keras.Sequential()
model.add(keras.layers.Dense(units=6, input_shape=(6,)))
model.add(keras.layers.Dense(units=?))
最后一層是輸出層(因為我不知道你的輸出是什么樣的,我無法定義單位。)
還有一個給您的快速提示,您可以通過編寫如下代碼來減少代碼大小:
import tensorflow as tf
import numpy as np
from tensorflow import keras
import pandas as pd
a=0
file = pd.read_csv(r"""C:\Users\lavni\OneDrive\Desktop\proj.csv""",sep=',')
Charges = file['charges'].to_numpy()
features = ['age', 'sex', 'bmi', 'children', 'smoker', 'region']
Data = file[features].to_numpy()
# it will convert all of your features into a numpy array
model = keras.Sequential()
model.add(keras.layers.Dense(units=6, input_shape=(6,)))
model.compile(optimizer='sgd',loss='mean_squared_error')
model.fit(Data,Charges)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.