找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 3051|回复: 7

[求助] 请问这段代码的问题在哪?

1

主题

4

帖子

4

积分

贫民

积分
4
Miyicoooo 发表于 2018-1-16 15:08:34 | 显示全部楼层 |阅读模式
import pandas as pd
filename='G:\\python_work\\sales_data.xls'
data=pd.read_excel(filename,index_col=u'序号')
data[data==u'好']=1
data[data==u'高']=1
data[data==u'是']=1
data[data!=1]=0
data=data.as_matrix()
data_x=data[:,:3]
data_y=data[:,3]
from keras.models import Sequential
from keras.layers.core import Dense,Activation
from sklearn.metrics import confusion_matrix
model=Sequential()
model.add(Dense(input_dim=3,output_dim = 10))
model.add(Activation('relu'))
model.add(Dense(input_dim=10,output_dim = 1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',optimizer='adam')
model.fit(data_x,data_y,nb_epoch=1000,batch_size=1)
yp=model.predict_classes(data_x).reshape(len(data_y))
print('混淆矩阵',confusion_matrix(data_y,yp))

运行结果:  ValueError: Can't handle mix of unknown and continuous
回复

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2018-1-16 15:27:01 | 显示全部楼层
本帖最后由 剑心无痕 于 2018-1-16 15:29 编辑

模型没有inputs,看看keras的例子
  1. model=Sequential()
  2. model.add(Dense(10, input_shape=(3,)))
复制代码


回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
Miyicoooo  楼主| 发表于 2018-1-16 15:44:00 | 显示全部楼层
剑心无痕 发表于 2018-1-16 15:27
模型没有inputs,看看keras的例子

好像还是不行 ,我就按我上面的代码,打印两个y值都可以,没有报错,但打印混淆矩阵就报错
回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2018-1-16 15:56:08 | 显示全部楼层
Miyicoooo 发表于 2018-1-16 15:44
好像还是不行 ,我就按我上面的代码,打印两个y值都可以,没有报错,但打印混淆矩阵就报错 ...

data_x和data_y的shape打印出来,估计是维度不正确
回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2018-1-16 16:00:40 | 显示全部楼层
Miyicoooo 发表于 2018-1-16 15:44
好像还是不行 ,我就按我上面的代码,打印两个y值都可以,没有报错,但打印混淆矩阵就报错 ...

没有你的数据,给你随机数一个例子
  1. import numpy as np
  2. data_x=np.random.randn(10,3)
  3. data_y=np.random.randn(10)
  4. from keras.models import Sequential
  5. from keras.layers.core import Dense,Activation
  6. from sklearn.metrics import confusion_matrix
  7. model=Sequential()
  8. model = Sequential()
  9. model.add(Dense(10, input_shape=(3,), activation='relu'))
  10. model.add(Dense(1, activation='sigmoid'))
  11. model.compile(loss='binary_crossentropy',optimizer='adam')
  12. model.fit(data_x,data_y,nb_epoch=1000,batch_size=1)
  13. yp=model.predict_classes(data_x).reshape(len(data_y))
  14. print('混淆矩阵',confusion_matrix(data_y,yp))
复制代码


回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
Miyicoooo  楼主| 发表于 2018-1-16 16:05:46 | 显示全部楼层
这个是数据,用你的例子可以,但我这实验数据好像不行

sales_data.xls

26.5 KB, 下载次数: 4

实验诗句

回复 支持 反对

使用道具 举报

2

主题

219

帖子

219

积分

版主

Rank: 7Rank: 7Rank: 7

积分
219

热心会员默默耕耘优秀版主

剑心无痕 发表于 2018-1-16 16:13:30 | 显示全部楼层
Miyicoooo 发表于 2018-1-16 16:05
这个是数据,用你的例子可以,但我这实验数据好像不行
  1. from keras.models import Sequential
  2. from keras.layers.core import Dense,Activation
  3. from sklearn.metrics import confusion_matrix
  4. model = Sequential()
  5. model.add(Dense(10, input_shape=(3,), activation='relu'))
  6. model.add(Dense(1, activation='sigmoid'))
  7. model.compile(loss='binary_crossentropy',optimizer='adam')
  8. model.fit(data_x,data_y,nb_epoch=1000,batch_size=5)
  9. yp=model.predict_classes(data_x).reshape(len(data_y))
  10. print('混淆矩阵',confusion_matrix(list(data_y),list(yp)))
复制代码
这样就可以了,confusion_matrix传的参数是list不是numpy对象
回复 支持 反对

使用道具 举报

1

主题

4

帖子

4

积分

贫民

积分
4
Miyicoooo  楼主| 发表于 2018-1-16 16:19:38 | 显示全部楼层
剑心无痕 发表于 2018-1-16 16:13
这样就可以了,confusion_matrix传的参数是list不是numpy对象

出来了,谢谢你
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表