【问题标题】:Python error - only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indicesPython 错误 - 只有整数、切片 (`:`)、省略号 (`...`)、numpy.newaxis (`None`) 和整数或布尔数组是有效索引
【发布时间】:2018-03-11 18:21:28
【问题描述】:

我正在尝试在 python 中实现 SVM,但我无法弄清楚这一行中的错误:if i == y[i] :

dataset = genfromtxt('E:\cleveland.csv',dtype= float,delimiter=',')
#print dataset
X = dataset[:,0:12] #labels
y = dataset[:,13]  #target

#replace 1 to 4 by 1 label
for index,item in enumerate(y):
    if not(item==0.0):
        print(y)
target_names = ['0', '1']

modelSVM = LinearSVC(C=0.1)
pca = PCA(n_components=2, whiten=True).fit(X)
X_new = pca.transform(X)

#calling plot_2D
plot_2D(X_new,y,target_names)

#Applying cross validation on the training and test set for validating our Linear SVM model
X_train, X_test, y_train, y_test=cross_validation.train_test_split(X_new,y,test_size=0.2,train_size=0.8,random_state=0) 
modelSVM = modelSVM.fit(X_train,y_train)
print ("Linear SVC values with split")
print (modelSVM.score(X_test,y_test))
modelSVMRaw = LinearSVC(C=0.1)
modelSVMRaw = modelSVMRaw.fit(X_new,y)
cnt=0
for i in modelSVMRaw.predict(X_new):
    if i == y[i]:
        cnt=cnt+1

那里的切片错误是什么?或任何与此相关的错误

【问题讨论】:

  • 错误是你试图用任何i 来索引y[i],但i 可能是一些字符串标签,我猜? print(i) 你的错误应该会变得清晰。
  • 哪一行给出了错误?
  • 能否请您修复缩进并提供完整的错误消息。
  • 看不出缩进怎么错了!

标签: python


【解决方案1】:

modelSVMRaw.predict(X_new) 返回的值不是整数,您正在使用它来索引数组 y。

【讨论】:

  • 是的,我是一个浮点数。所以在这种情况下,将 i 类型转换为整数应该可以解决它,对吧?
  • 该问题已解决。谢谢!
  • @DeekshaKamath 你是怎么解决的?
  • 对索引进行类型转换:i = int(i)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-29
  • 2019-09-26
  • 1970-01-01
  • 2021-08-29
  • 1970-01-01
  • 2017-12-08
  • 2019-03-13
相关资源
最近更新 更多