【发布时间】:2018-09-09 00:44:49
【问题描述】:
我已经训练了一个神经网络,我想将预测值附加到 inverse_scaled 测试数据中,这样我就可以检查预测与原始特征值的对比。但是,当我运行代码时,以下行:
Xtest["prediciton"] = pred
抛出以下错误:
IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices
我相信这是因为在以下行之后,Xtest 变成了一个 np.array:
Xtest = scaler.inverse_transform(Xtest)
这是完整的代码:
import keras
import numpy
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
import pandas as pd
import numpy as np
import matplotlib
from matplotlib import style
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from IPython.core.display import display
from sklearn.preprocessing import MinMaxScaler
matplotlib.style.use('ggplot')
data_num = pd.read_csv('mult_test.csv')
print(data_num.head(n=10))
scaler = MinMaxScaler(feature_range=(0, 1))
features = data_num.drop(['Label1'], axis=1, errors='ignore')
features = pd.DataFrame(scaler.fit_transform(features))
scale_num_data = pd.concat([data_num['Label1'], features], axis=1)
dtrain, dtest = train_test_split(scale_num_data, test_size=0.25, random_state=570)
X = dtrain.drop(['Label1'], axis=1, errors='ignore')
y = dtrain['Label1']
Xtest = dtest.drop(['Label1'], axis=1, errors='ignore')
Xtest.to_csv('X_test_1.csv')
ytest = dtest['Label1']
model = Sequential([
Dense(10, input_shape=(4, ), activation='relu'),
Dense(32, activation='relu'),
Dense(10, activation='softmax')
])
model.summary()
model.compile(optimizer='rmsprop', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(X, y, epochs=10, batch_size=10, shuffle=True)
scores = model.evaluate(Xtest, ytest, batch_size=5)
print("%s: %.2f%%" % (model.metrics_names[1], scores[1]*100))
pred = model.predict_classes(Xtest)
Xtest = scaler.inverse_transform(Xtest)
Xtest["prediciton"] = pred
Xtest.to_csv("Xtest_predict.csv")
谢谢你们的帮助,伙计们!
【问题讨论】:
标签: python pandas tensorflow neural-network keras