Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用经过训练的Keras模型对新csv数据进行预测_Python_Tensorflow_Machine Learning_Keras_Neural Network - Fatal编程技术网

Python 使用经过训练的Keras模型对新csv数据进行预测

Python 使用经过训练的Keras模型对新csv数据进行预测,python,tensorflow,machine-learning,keras,neural-network,Python,Tensorflow,Machine Learning,Keras,Neural Network,所以我在做一个项目,基本上我必须预测房价是否高于或低于其中间价,为此,我使用了Kaggle()的数据集。1表示“高于中值”,0表示“低于中值”。我编写此代码是为了训练神经网络并将其保存为.h5文件: import pandas as pd from sklearn import preprocessing from sklearn.model_selection import train_test_split from keras.models import Sequential from ke

所以我在做一个项目,基本上我必须预测房价是否高于或低于其中间价,为此,我使用了Kaggle()的数据集。1表示“高于中值”,0表示“低于中值”。我编写此代码是为了训练神经网络并将其保存为.h5文件:

import pandas as pd
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense
import h5py

df = pd.read_csv('housepricedata.csv')
dataset = df.values

X = dataset[:,0:10]
Y = dataset[:,10]

min_max_scaler = preprocessing.MinMaxScaler()

X_scale = min_max_scaler.fit_transform(X)

X_train, X_val_and_test, Y_train, Y_val_and_test = train_test_split(X_scale, Y, test_size=0.3)
X_val, X_test, Y_val, Y_test = train_test_split(X_val_and_test, Y_val_and_test, test_size=0.5)

model = Sequential([
    Dense(32, activation='relu', input_shape=(10,)),
    Dense(32, activation='relu'),
    Dense(1, activation='sigmoid'),
])

model.compile(optimizer='sgd',
              loss='binary_crossentropy',
              metrics=['accuracy'])

hist = model.fit(X_train, Y_train,
          batch_size=32, epochs=100,
          validation_data=(X_val, Y_val))

model.save("house_price.h5")
运行之后,它成功地将.h5文件保存到我的目录中。我现在想做的是使用我训练过的模型对一个新的.csv文件进行预测,并确定每个预测值是否高于或低于中间价。这是VSCode中csv文件的图像,我希望它对其进行预测: 如您所见,此文件不包含1(高于中值)或0(低于中值),因为这是我希望它预测的。这是我为此编写的代码:

import pandas as pd
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense
from keras.models import load_model
import h5py

df = pd.read_csv('data.csv')
dataset = df.values

X = dataset[:,0:10]
Y = dataset[:,10]

min_max_scaler = preprocessing.MinMaxScaler()

X_scale = min_max_scaler.fit_transform(X)

X_train, X_val_and_test, Y_train, Y_val_and_test = train_test_split(X_scale, Y, test_size=0.3)
X_val, X_test, Y_val, Y_test = train_test_split(X_val_and_test, Y_val_and_test, test_size=0.5)

model = load_model("house_price.h5")

y_pred = model.predict(X_test)

print(y_pred)
它的输出是
[[0.00101464]]
我不知道这是什么,也不知道为什么它只返回一个值,即使csv文件有4行。有人知道我如何解决这个问题,并且能够预测csv文件中每一行的1或0吗?
谢谢大家!

我很明白你想要什么! 让我们试试看!这个代码对我有用

 import tensorflow
 model = tensorflow.keras.models.load_model("house_price.h5")
 y_pred=model.predict(X_test)
您仍然无法访问以下站点 1: 2:

两个y_pred为我生成相同的输出

这里有一件事你不可能包含0和1,因为你使用的是sigmoid函数,它决定了预测的概率 所以如果(y_pred>0.5),它的平均值是1

  #True rep one

  #false rep zero

  #you can use replace function or map function of pandas  to get convert true 
 into 1

谢谢你这么快的回复,但我想我的问题可能不是很清楚。我对它进行了编辑,使它更简洁,我也尝试了你给我的解决方案,但它似乎不起作用。你能告诉我我做错了什么吗?非常感谢。我会尽快把这段代码上传到github上。伙计们,有人能帮我查一下这个新问题,看看你们能不能回答?
  #True rep one

  #false rep zero

  #you can use replace function or map function of pandas  to get convert true 
 into 1