我在此处搜索了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的新手。我想知道如何打印此结果列表,我尝试了几种方法,但我做不到。谢谢!
答案 0 :(得分:2)
您省略了下划线:
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)