如何在python中打印列表的结果?

2024-09-23 06:37:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我在stackoverflow上搜索了一下,但在打印有问题的结果时没有成功

代码如下:

import math


class KNNRegressao:

    def __init__(self, x, y, k=3):
        self.n_amostras = len(x)
        self.n_attrs = len(x[0])
        self.x, self.y, self.k = x, y, k

    def predict(self, amostra):
        d = {}
        for i in range(self.n_amostras):
            soma = 0
            for j in range(self.n_attrs):
                soma += math.pow(amostra[j] - self.x[i][j], 2)
            d[i] = math.sqrt(soma)
        k_vizinhos = sorted(d, key=d.get)[:self.k]
        soma = sum([self.y[indice] for indice in k_vizinhos])
        return soma / self.k


if __name__ == "main":
    entradas = [[2, 50], [4, 90], [1, 38], [5, 105], [2, 48], [6, 120], [3, 65], [4, 80], [5, 100], [3, 60]]
    saidas = [250, 490, 138, 505, 248, 612, 365, 480, 500, 360]
    knn = KNNRegressao(entradas, saidas, 3)
    resultado = []
    for entrada in entradas:
        resultado.append(knn.predict(entrada))
        print("Esperado: [%d]" % saidas)
        print("Predict: [%d]" % resultado)

我对python还比较陌生。我想知道我如何能打印出这个结果列表,我尝试了几种方法,但我不能。谢谢你


Tags: inselfforlendefmathpredictattrs
1条回答
网友
1楼 · 发布于 2024-09-23 06:37:10

您省略了下划线:

if __name__ == "__main__" 

所以它从未进入if

print("Esperado: [%d]" % saidas)语句将失败,不能用这种方式格式化列表。您可以使用print("Esperado: [%s]" % str(saidas)),但没有什么意义,您也可以:print("Esperado:", saidas)

if __name__ == "__main__":
     entradas = [[2, 50], [4, 90], [1, 38], [5, 105], [2, 48], [6, 120], [3, 65], [4, 80], [5, 100], [3, 60]]
     saidas = [250, 490, 138, 505, 248, 612, 365, 480, 500, 360]
     knn = KNNRegressao(entradas, saidas, 3)
     resultado = []
     for entrada in entradas:
         resultado.append(knn.predict(entrada))
         print("Esperado:", saidas)
         print("Predict:" resultado)

相关问题 更多 >