2014-10-15 1 views
-2

Я пытаюсь запустить этот код.python.trainData = trainData.astype (np.float) /255.0 ValueError: установка элемента массива с последовательностью

import csv 
import numpy as np 
from sklearn import svm, datasets, cross_validation 
from sklearn.grid_search import GridSearchCV 

###Load Training Data 
trainTargetArray = [] 
trainDataArray = [] 
with open('ocp_training.csv', 'r') as trainFile: 
trainReader = csv.reader(trainFile, delimiter = ',') 
for row in trainReader: 
    trainTargetArray.append(row[0])  
    trainDataArray.append(row[1:]) 

#Delete column headers  
del trainTargetArray[0] 
del trainDataArray[0] 
trainData = np.array(trainDataArray) 
trainTarget = np.array(trainTargetArray) 
trainData = trainData.astype(np.float)/255.0 
trainTarget = trainTarget.astype(np.float) 

###Load Testing Data 
testDataArray = [] 
with open('ocp_testing.csv', 'r') as testFile: 
testReader = csv.reader(testFile, delimiter = ',') 
for row in testReader: 
    testDataArray.append(row) 

    #Delete column headers   
del testDataArray[0] 
testData = np.array(testDataArray) 
testData = testData.astype(np.float)/255.0 

#Set up classification and fit the model data 
svc = svm.SVC(gamma=0.128, C=1) 
svc.fit(trainData, trainTarget) 

#Predict/Determine Value of New Images 
prediction = svc.predict(testData) 

#Save output to file 
output = open('./output.csv', 'w') 
for x, value in np.ndenumerate(prediction): 
    output.write(str(int(value))) 
    output.write("\n") 
output.close() 

в то время как я пытаюсь запустить этот код он дает мне эту ошибку Traceback (самый последний вызов последний): ** IDLE Внутренняя Исключение: Файл «C: \ Python34 \ Lib \ idlelib \ бежать. py ", строка 353, код строки exec (код, self.locals) Файл« C: \ Python34 \ run.py », строка 20, в trainData = trainData.astype (np.float) /255.0 ValueError: установка элемента массива с последовательностью.

ответ

1

Извлеките операторы del и замените то, что приходит после нарезанной версии списка. Т.е.

del trainTargetArray[0] 
del trainDataArray[0] 
trainData = np.array(trainDataArray) 
trainTarget = np.array(trainTargetArray) 

становится

trainData = np.array(trainDataArray[1:]) 
trainTarget = np.array(trainTargetArray[1:]) 

Затем проверьте консистенцию длина линии:

np.unique(map(len, trainData)) 

должно дать вам только одно значение. Если их несколько, то некоторые из ваших строк длиннее других, и вам придется исправить это.

+0

он по-прежнему дает ту же ошибку, пожалуйста, запустите мой код на своем компиляторе и скажите мне его срочный –

+0

, ваш пример не является автономным или минимальным. Никто, кроме вас, не может управлять им или помогать вам, без дополнительной информации. Мое предложение было основано на общей причине этой ошибки. Если вы уверены, что ваши строки csv имеют одинаковую длину, тогда ошибка находится где-то в другом месте, и я не желаю тратить время на размещение ставок. – eickenberg