Python numpy错误
我的代码需要在互联网上收集一些信息,我的工作做得很好。现在我需要从数据库中获取数据并导入到numpy数组中。 但在某个地方我犯了个错误 我对这一切都很陌生,但仍然有很多事情我不完全理解。感谢您的任何帮助 这是一个错误: ValueError:无法将输入数组从形状(1818,2)广播到 形状(1818) 这是我的代码:Python numpy错误,python,arrays,numpy,Python,Arrays,Numpy,我的代码需要在互联网上收集一些信息,我的工作做得很好。现在我需要从数据库中获取数据并导入到numpy数组中。 但在某个地方我犯了个错误 我对这一切都很陌生,但仍然有很多事情我不完全理解。感谢您的任何帮助 这是一个错误: ValueError:无法将输入数组从形状(1818,2)广播到 形状(1818) 这是我的代码: import numpy as np import sqlite3 as db import selenium from selenium import webdriver imp
import numpy as np
import sqlite3 as db
import selenium
from selenium import webdriver
import time
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.common.keys import Keys
from sklearn.neighbors import KNeighborsClassifier
driver = webdriver.Chrome()
driver.get("http://www.rezultati.com/utakmica/nZudUKkp/#detalji")
#Collecting data
try:
d_kvz = driver.find_element_by_xpath('//*[@id="default-odds"]/tbody/tr[1]/td[2]/span').text
try:
d_kv = float(d_kvz)
except ValueError:
d_kv = 1.00
except NoSuchElementException:
d_kvz = 1.00
d_kv = 1.00
print(d_kv)
# open new link
driver.find_element_by_id('a-match-odds-comparison').click()
newtab = driver.current_window_handle
driver.switch_to.window(newtab)
time.sleep(2)
# open new link and collect more data
driver.find_element_by_id("bookmark-under-over").click()
try:
granicax = driver.find_elements_by_xpath(
"//*[@id='block-under-over-ft-include-ot']/table/tbody/tr/td[preceding-sibling::td[1]/div/a[@title='bet365'] and following-sibling::td/span[@class=' odds-wrap ']]")
granicaz = granicax[0].text
except IndexError:
granicaz = 0
granica = float(granicaz)
print(granica)
# Collecting data from db1
conn = db.connect('rezultati.db')
print("Connected with db1!")
conn.row_factory = lambda cursor, row: row[0]
c = conn.cursor()
br_po = c.execute("SELECT BR_PO FROM model").fetchall()
granica = c.execute("SELECT GRANICA FROM model").fetchall()
kvota = c.execute("SELECT D_KV FROM model").fetchall()
x = np.vstack((granica,kvota)).T
y = np.vstack((br_po))
print(x)
print(y)
c.close()
conn.close()
print("Connection closed")
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(x,y)
knn2 = KNeighborsClassifier(n_neighbors=5)
knn2.fit(x,y)
b = (knn.predict([x,y]))[0]
u = (knn2.predict([x,y]))[0]
t = b.tolist()
r = u.tolist()
print(t)
print(r)
rezultat = 0
conn2 = db.connect('ProbaStatistike.db')
print("Connected with db2")
c2 = conn2.cursor()
c2.execute("INSERT INTO Probica VALUES (?,?,?,?)",
(granica,t,r,rezultat,))
conn2.commit()
driver.close()
c2.close()
conn2.close()
print("Connection closed")
该错误试图告诉您,两个数组一起使用时,它们的大小应该相同,但它们不同(例如,
x+y
其中x和y是大小不同的numpy数组,则会出现错误)
在没有进一步信息的情况下,很难确定这是在哪里发生的,但猜测一下,这似乎是错误的:
knn = KNeighborsClassifier(n_neighbors=1)
knn.fit(x,y)
knn2 = KNeighborsClassifier(n_neighbors=5)
knn2.fit(x,y)
b = (knn.predict([x,y]))[0]
u = (knn2.predict([x,y]))[0]
具体地说,使用(x,y)
进行fit
后,您不太可能同时使用x
和y
进行predict
。此外,您通常只需调用x
(或者更好,一个与原始x不同但在统计上相关的测试集)
有关更多信息,请参见此处的Iris示例:
能否添加完整的堆栈跟踪,以便我们查看错误发生的位置?