2016-05-22 3 views
0

Я хочу построить модель данных, используя этот код:питона: TypeError: неподдерживаемый тип операнда (ов) для +: «numpy.ndarray» и «ул»

def modeldata(filename, ratingMatrix): 
result={} 
itemmatrix = matrixconvert(ratingMatrix) 
current = 0 
total = len(itemmatrix) 

for item in itemmatrix: 
    current+=1 
    if current%100--0: print ("%d/%d" % (current,total)) 

    result[item] = neighbor 
    #print result 

with open(filename+".csv", "wb") as f: 
    pickle.dump(result, f) 

переменного имя файла является результатом данных от процесс кластеризации, который содержит идентификатор пользователя, ItemID и рейтинг, `то ratingMatrix это словарь, который содержит ключ (пользователь), подраздел (пункт) и рейтинг

10 dict 1 {'255': 3.0} 

. Сосед содержит данные о сходстве.

0 tuple 2 (1.0, '9790') 

Я хочу построить модель данных, используя эти вещи выше, я запустить функцию с этим кодом

modeldata(filename, ratingMatrix) 

, но я получаю эту ошибку:

1/306 
. 
. 
304/306 
305/306 
306/306 
Traceback (most recent call last): 

    File "<ipython-input-29-5af8931a8f1e>", line 1, in <module> 
    modeldata(filename, ratingMatrix) 

    File "<ipython-input-28-220883448026>", line 14, in modeldata 
    with open(filename+".txt", "wb") as f: 

TypeError: unsupported operand type(s) for +: 'numpy.ndarray' and 'str' 

У Вас есть любая идея, что не так с этим кодом? где ошибка, и как я могу заставить ее работать?

Спасибо за вашу помощь ....

+0

Могу ли я увидеть, как объявляется ваша переменная имени файла? Это не похоже на конкатенацию строк на вашей 'открытой' строке –

+0

жаль, что это csv, я обновил код. Но я все еще получаю эту ошибку ... :( – estu

+0

@etsu well 'filename' хочет быть строкой, но выглядит как ее массив numpy? И есть ли какая-то конкретная причина, по которой вы открываете файл в двоичном режиме? –

ответ

0

ошибки вы получаете находится в пределах функции modeldata и более конкретно заявление открытия для записи в файл. Ошибка заключается в том, что вы не можете добавить с помощью «+» строку «.txt» в «numpy.ndarray», которая выглядит так, как будто она исходит из имени файла переменной. Убедитесь, что ваша переменная имени файла является фактическим именем файла, которое вы хотите записать, а не массивом numpy.

+0

Я попытаюсь прочитать имя файла не как массив. tq – estu

+0

Можете ли вы изменить свой вопрос и добавить часть кода, в котором объявлена ​​переменная имени файла? – aBiologist

Смежные вопросы