Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.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
Keras 多类MLP分类器_Keras_Confusion Matrix_Multiclass Classification - Fatal编程技术网

Keras 多类MLP分类器

Keras 多类MLP分类器,keras,confusion-matrix,multiclass-classification,Keras,Confusion Matrix,Multiclass Classification,我是keras的新手 我尝试使用我的数据集,遵循用于多类softmax分类的多层感知器(MLP)的Keras教程。 我的数据有三类,只有一个特征,但我不明白为什么结果总是显示只有0,3的准确度,并且模型预测所有训练数据为第一类。那么混淆矩阵是这样的 以下是编码: 导入keras 从keras.models导入顺序 从keras.layers导入致密、脱落、激活 从keras.optimizers导入新加坡元 作为pd进口熊猫 将numpy作为np导入 #导入数据集 dataset=pd.rea

我是keras的新手

我尝试使用我的数据集,遵循用于多类softmax分类的多层感知器(MLP)的Keras教程。 我的数据有三类,只有一个特征,但我不明白为什么结果总是显示只有0,3的准确度,并且模型预测所有训练数据为第一类。那么混淆矩阵是这样的

以下是编码:

导入keras
从keras.models导入顺序
从keras.layers导入致密、脱落、激活
从keras.optimizers导入新加坡元
作为pd进口熊猫
将numpy作为np导入
#导入数据集
dataset=pd.read\u csv('StatusAll.csv'))
X=dataset.iloc[:,1::]值
y=dataset.iloc[:,0:1]。值
#将数据集拆分为训练集和测试集
从sklearn.model\u选择导入列车\u测试\u拆分
x_序列,x_测试,y_序列,y_测试=序列测试分割(x,y,测试大小=0.2,随机状态=0)
从keras.utils导入到_category
y_列=到_分类(y_列)
y_检验=to_分类(y_检验)
模型=顺序()
#稠密(64)是一个具有64个隐藏单元的完全连接层。
#在第一层中,必须指定预期的输入数据形状:
#这里是20维向量。
模型添加(密集(64,激活=tanh',输入=1))
模型。添加(辍学率(0.5))
model.add(稠密(64,activation='tanh'))
模型。添加(辍学率(0.5))
model.add(密集(4,activation='softmax'))
sgd=sgd(lr=0.01,衰变=1e-6,动量=0.9,nesterov=True)
model.compile(loss='classifical_crossentropy',
优化器=新加坡元,
指标=[‘准确度’])
历史=模型拟合(x\U系列、y\U系列、,
纪元=100,
批次(单位大小=128)
分数=模型。评估(x检验、y检验、批量大小=128)
打印('测试分数:',分数[0])
打印('测试精度:',分数[1])
从SKM学习导入度量
预测=模型预测(x_检验)
预测=周围的np(预测)
y_测试(非)类别=[np.argmax(t)表示y_测试中的t]
y_predict_non_category=[np.argmax(t)表示预测中的t]
从sklearn.metrics导入混淆矩阵
conf_mat=混淆矩阵(y_测试_非类别,y_预测_非类别)
打印(配置文件)
我希望能得到一些建议,谢谢

x_火车的例子


您的最终致密层有4个输出,似乎您正在将4而不是3分类

model.add(Dense(3, activation='softmax')) # Number of classes 3

查看x_序列和y_序列的样本数据有助于确保预处理是正确的。因为您只有一个特性,所以MLP可能有点过头了。A会更简单,除非你想用MLP做实验。

谢谢你让我意识到我在那个部分犯了一个错误,顺便说一句,在我把它改成3个类之后,我仍然面临同样的问题,混淆矩阵仍然是这样。但是,我提供了x_列和y_列的示例。感谢努里克