2017-03-28 6 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と統計的に関連するテストセット)を使用してpredictを呼び出します。

は、より多くの情報のためにここにアイリスの例を参照してください:エラーが発生した場所を私たちが見ることができるように

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