【发布时间】:2020-07-29 22:45:20
【问题描述】:
训练我的模型后,测试准确率始终为 50%。我下面的代码有什么问题?
0~4000个正常信号数据,4001~6000个异常信号数据进行二分类。 数据维度为(6000, 8000)
data = np.load('data.npy')
label = []
for i in range(len(data)): ## labeling
if i < 4000:
label.append(1)
else:
label.append(0)
label = np.array(label)
## each 100 data was extracted for test
test_data = np.concatenate((data[:100], data[4001:4101]), axis=0)
test_label = np.concatenate((label[:100], label[4001:4101]), axis=0)
train_data = np.concatenate((data[100:4001], data[4101:]))
train_label = np.concatenate((label[100:4001], label[4101:]))
## data shuffleing
tmp = [[x,y]for x, y in zip(train_data, train_label)]
tmp1 = [[x,y]for x, y in zip(test_data, test_label)]
random.shuffle(tmp)
random.shuffle(tmp1)
train_data = [n[0] for n in tmp]
train_label = [n[1] for n in tmp]
train_data = np.array(train_data)
train_label = np.array(train_label)
teet_data = [n[0] for n in tmp1]
test_label = [n[1] for n in tmp1]
test_data = np.array(test_data)
test_label = np.array(test_label)
## scaling
mean = train_data.mean(axis=0)
std = train_data.std(axis=0)
train_data -= mean
train_data /= std
test_data -= mean
test_data /= std
model = models.Sequential()
model.add(layers.Dense(128, activation='relu', input_shape=(8000,)))
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dense(128, activation='relu'))
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))
model.compile(optimizer='Adam',
loss='binary_crossentropy',
metrics=['acc'])
history = model.fit(train_data,
train_label,
epochs=60,
batch_size=128,
shuffle=True,
validation_split=0.2)
损失曲线
loss, acc = model.evaluate(test_data, test_label)
200/200 [==============================] - 0s 140us/步
print(acc)
0.5
【问题讨论】:
-
你有 8000 个特征?
-
是的,数据形状是 (6000, 8000)
标签: python tensorflow machine-learning keras