Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.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 csv数据库的Keras索引越界错误_Python_Machine Learning_Keras - Fatal编程技术网

Python csv数据库的Keras索引越界错误

Python csv数据库的Keras索引越界错误,python,machine-learning,keras,Python,Machine Learning,Keras,这是我在使用StackOverflow网站一段时间后第一次在上面发帖 我一直试图通过这个链接预测机器学习实践数据库的最后一列 我运行了下面的代码并收到了此错误: 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 运行文件('/Users/ric4711/diabetes_tensorflow',wdir='/Users/ric4711') 文件“/Users/ric4711/anaconda/lib/python2.7/site-packages/spyder/utils/site/sit

这是我在使用StackOverflow网站一段时间后第一次在上面发帖

我一直试图通过这个链接预测机器学习实践数据库的最后一列

我运行了下面的代码并收到了此错误:

回溯(最近一次呼叫最后一次):

文件“”,第1行,在 运行文件('/Users/ric4711/diabetes_tensorflow',wdir='/Users/ric4711')

文件“/Users/ric4711/anaconda/lib/python2.7/site-packages/spyder/utils/site/site-customize.py”,第880行,在runfile中 execfile(文件名、命名空间)

文件“/Users/ric4711/anaconda/lib/python2.7/site-packages/spyder/utils/site/site-customize.py”,第94行,在execfile中 execfile(文件名,*其中)

文件“/Users/ric4711/diabetes\u tensorflow”,第60行,in y_列=到_分类(y_列,num_类=num_类)

文件“/Users/ric4711/anaconda/lib/python2.7/site packages/keras/utils/np_utils.py”,第25行,to_分类 范畴的[n,y]=1

索引器:索引3超出大小为3的轴1的界限

我怀疑我的y轴维度可能存在问题,或者我如何管理这方面的类别。任何帮助都将不胜感激

从熊猫导入读取\u csv
进口numpy
从sklearn.model\u选择导入列车\u测试\u拆分
从keras.utils导入到_category
从sklearn.preprocessing导入标签编码器
从keras.layers导入稠密,输入
从keras.models导入模型
dataset=read_csv(r)/Users/ric4711/Documents/dataset_diabetes/diabetic_data.csv”,标题=None)
#第2、5、10、11、18、19、20列都有“?”
#(101767,50)数据集的大小
#列数为“”的问题列
#2      2273
#5     98569
#10    40256
#11    49949
#18       21
#19      358
#20     1423
le=标签编码()
数据集[[2,5,10,11,18,19,20]]=数据集[[2,5,10,11,18,19,20]]。替换(“?”,numpy.NaN)
dataset=dataset.drop(dataset.columns[[0,1,5,10,11]],axis=1)
dataset.dropna(inplace=True)
y=数据集[[49]]
X=dataset.drop(dataset.columns[[44]],1)
X_序列,X_测试,y_序列,y_测试=序列测试分割(X,y,测试大小=0.33,随机状态=42)
对于X_test.columns.values中的列:
如果X_测试[col].dtypes=='object':
数据=X列[col]。追加(X列测试[col])
拟合(数据值)
X_列[col]=le.transform(X_列[col])
X_测试[col]=le.transform(X_测试[col])
对于y_test.columns.values中的列:
如果y_test[col].dtypes=='object':
数据=y_列[col]。追加(y_测试[col])
拟合(数据值)
y_列[col]=le.transform(y_列[col])
y_测试[col]=le.transform(y_测试[col])
批量大小=500
num_epochs=300
隐藏大小=250
num_test=X_test.shape[0]
num\u training=X\u train.shape[0]
高度、宽度、深度=1,X_列形状[1],1
num_classes=3
y_-train=y_-train.as_矩阵()
y_测试=y_测试。作为矩阵()
y_列=到_分类(y_列,num_类=num_类)
y_测试=分类(y_测试,num_类=num_类)
inp=输入(形状=(高度*宽度)
隐藏1=密集(隐藏大小,激活=tanh')(inp)
hidden_2=稠密(hidden_size,activation='tanh')(hidden_1)
隐藏3=密集(隐藏大小,激活=tanh')(隐藏2)
hidden_4=稠密(hidden_大小,activation='tanh')(hidden_3)
hidden_5=稠密(hidden_大小,activation='tanh')(hidden_4)
hidden_6=稠密(hidden_大小,activation='tanh')(hidden_5)
hidden_7=稠密(hidden_大小,activation='tanh')(hidden_6)
hidden_8=稠密(hidden_size,activation='tanh')(hidden_7)
隐藏9=密集(隐藏大小,激活=tanh')(隐藏8)
hidden_10=稠密(hidden_大小,activation='tanh')(hidden_9)
隐藏11=密集(隐藏大小,激活=tanh')(隐藏10)
out=密集(num_类,activation='softmax')(隐藏11)
模型=模型(输入=输入,输出=输出)
model.compile(loss='classifical_crossentropy',
优化器='adam',
指标=[‘准确度’])
模型拟合(X\u序列,y\u序列,批量大小=批量大小,历元数=历元数,验证\u分割=0.1,随机数=真)

model.evaluate(X_test,y_test,verbose=1)
我通过将num_类更改为4来解决这个问题,在.fit方法中,将numpy.array(X_train),numpy.array(y_train)

应用到\u category,假设类索引的范围为0到num_classes-1。似乎您的类索引不遵循此模式,或者num_classes是错误的。当我降低num_classes变量时,我会得到相同的错误,除了替换变量的数字。例如索引器:索引2超出轴1的范围,大小为2的索引器将其切换为4,但是,给了我一个不同的错误文件“/Users/ric4711/anaconda/lib/python2.7/site packages/pandas/core/index.py”,第1231行,在“convert_to_indexer raiser raise KeyError”(“%s不在索引“%objarr[mask])中)KeyError:”[11946 37160 20783…,12676 15694 54802]不在索引中'