Аргумент TypeError: float () должен быть строкой или числом: float (ab [1:]) - PullRequest
0 голосов
/ 20 мая 2018

У меня есть такой код, я получил ошибку в float(uji[1:])

    ab = []
    for fitur in self.fituruji:
        if (fitur[0] == 'F1') or (fitur[0] == 'F2') or (fitur[0] == 'F3') or (
                fitur[0] == 'F4') or (fitur[0] == 'F11') or (fitur[0] == 'F12'):
            ab.append(fitur)
    print ab

    for i, uji in enumerate(ab):
        print i, uji[1:]
        f_pd_neg = (bpf_neg[i] ** float(uji[1:])) * ((1 - bpf_neg[i]) ** (1 - float(uji[1:])))
        f_pd_pos = (bpf_pos[i] ** float(uji[1:])) * ((1 - bpf_pos[i]) ** (1 - float(uji[1:])))
        print f_pd_pos
        print f_pd_neg

В uji есть такой массив:

['F11', '1', '0', '0', '1', '1'] 
['F2', '1', '1', '0', '1', '0'] 
['F4', '1', '0', '0', '0', '0']

Что происходит, я уже даю float, Я понятия не имею, и bpf_pos выглядит так:

[0.42857142857142855, 0.5714285714285714, 0.5714285714285714]

И bpf_neg:

[0.14285714285714285, 0.2857142857142857, 0.2857142857142857]

И ошибка:

C:\Users\ACER\PycharmProjects\ProgramSkripsi\venv\Scripts\python.exe C:/Users/ACER/PycharmProjects/ProgramSkripsi/NaiveBayes.py
Traceback (most recent call last):
[0.42857142857142855, 0.5714285714285714, 0.5714285714285714]
  File "C:/Users/ACER/PycharmProjects/ProgramSkripsi/NaiveBayes.py", line 219, in <module>
    nb.BernoulliTest()
[0.14285714285714285, 0.2857142857142857, 0.2857142857142857]
[['F11', '1', '0', '0', '1', '1'], ['F2', '1', '1', '0', '1', '0'], ['F4', '1', '0', '0', '0', '0']]
  File "C:/Users/ACER/PycharmProjects/ProgramSkripsi/NaiveBayes.py", line 92, in BernoulliTest
0 ['1', '0', '0', '1', '1']
    f_pd_neg = (bpf_neg[i] ** float(ab[1:])) * ((1 - bpf_neg[i]) ** (1 - float(ab[1:])))
TypeError: float() argument must be a string or a number

Можеткто-нибудь подскажет в чем проблема?

1 Ответ

0 голосов
/ 20 мая 2018

Вам нужно перебрать uji[1:].Что-то вроде:

f_pd_neg = sum(bpf_neg[i] ** x * (1 - bpf_neg[i]) ** (1 - x) for x in map(int, uji[1:]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...