2017-03-28 1 views
0

내 코드가 인터넷에서 정보를 수집해야하고 그 작업이 잘되어 있어야합니다. 이제 데이터베이스에서 해당 데이터를 가져 와서 numpy 배열로 가져와야합니다. 하지만 어딘가에 실수가 있습니다 ...Python numpy 오류

저는이 모든 것에 매우 새롭지 만 여전히 많은 것을 이해하고 있습니다. 모든 종류의 도움을 주시면 감사하겠습니다.

이 오류입니다 :

ValueError: could not broadcast input array from shape (1818,2) into shape (1818)

그리고 이것은 내 코드입니다 : 오류들이 같은 크기 있어야 할 곳에 두 배열이 함께 사용되는 사실을 말하려고한다

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") 
+0

는 전체 스택 추적을 추가 할 수 있습니까? –

답변

0

하지만, 그들은 다릅니다 (예 : 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을 수행하는 데, 그 가능성을 사용 predict을 의미하는 것이 xy도 보통 x (또는 더 나은 것으로, 원래의 x와 통계적으로 다른 테스트 세트)로 예측을 호출합니다.

자세한 내용은 여기 아이리스 예를 참조하십시오 : 오류가 발생한 위치를 우리가 볼 수 있도록

http://scikit-learn.org/stable/tutorial/statistical_inference/supervised_learning.html