Реализация KNN на Python

Я пытаюсь реализовать простую технику KNN в Python, где я использую поминутные данные о ценах на акции и использую свои переменные x в качестве данных открытия, закрытия и объема, чтобы предсказать цену открытия следующей минуты. Мой код выглядит следующим образом: -

import numpy as np
import pandas as pd
import scipy
import matplotlib.pyplot as plt
from pylab import rcParams
import urllib
import sklearn
from sklearn.neighbors import KNeighborsRegressor
from sklearn import neighbors
from sklearn import preprocessing
from sklearn.cross_validation import train_test_split
from sklearn import metrics 
from googlefinance.client import get_price_data, get_prices_data, get_prices_time_data
import copy

np.set_printoptions(precision = 4, suppress = True)
rcParams['figure.figsize']=7,4
plt.style.use('seaborn-whitegrid')




param = {'q':"DJUSBK", 'i':"60",'x':"INDEXDJX",'p':"1Y"} # Dow Joes Banks
djusbk = get_price_data(param)
ticker_list=['ASB','BXS','BAC','BOH','BKU'] # 5 stocks from the Dow Jones Bank Index
ticker_dict = {}
for i in ticker_list :
    param = {'q':i, 'i':"60",'x':"NYSE",'p':"1Y"}
    df = get_price_data(param)
    x=i
    ticker_dict[x] = df

asb = copy.deepcopy(ticker_dict['ASB'])
asb_prime = pd.DataFrame(asb['Open'])
asb_prime['Close'] = asb['Close']
asb_prime['Volume'] = asb['Volume']

asb_prime_copy = copy.deepcopy(asb_prime)


# Splitting your data into test and training data sets
X_prime = asb_prime_copy.ix[:,(0,1,2)].values
asb_open_next = pd.DataFrame(copy.deepcopy(asb['Open']))
asb_open_next.drop(asb_open_next.index[:1], inplace=True)

asb_prime_copy= asb_prime_copy[:-1]

X_prime = asb_prime_copy.ix[:,(0,1,2)].values
y = asb_open_next.ix[:,(0)].values

X = preprocessing.scale(X_prime)

X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.5,random_state = 17)

#Building and Training Model  with Training Data
clf = neighbors.KNeighborsRegressor()
clf.fit(X_train,y_train)
print(clf)

# Evaluating the model's predictions against the test dataset
y_expect=y_test

y_pred= clf.predict(X_test)
print(metrics.classification_report(y_expect,y_pred))

В самом конце я получаю сообщение об ошибке. Не уверен, почему? Я использую Python 3.x

  File "C:\Users\gg\Anaconda3\lib\site-packages\sklearn\utils\multiclass.py", line 97, in unique_labels
    raise ValueError("Unknown label type: %s" % repr(ys))

ValueError: Unknown label type: (array([ 28.2  ,  28.375,  28.325, ...,  28.075,  28.275,  28.1  ]), array([ 28.23 ,  28.4  ,  28.32 , ...,  28.055,  28.28 ,  28.08 ]))

Как предлагается в ответе ниже, KNeighborsClassifier () был обновлен с помощью KNeighborsRegressor (), и это решило предыдущую проблему.

У вас есть принял ответ; что именно вы имеете в виду под "предыдущим выпуском" ?? Есть ли еще нерешенная проблема? Практически принятый ответ = дело закрыто, за исключением, возможно, поправок / уточнений незначительный ... Я настоятельно рекомендую вам открыть новый вопрос.

desertnaut 25.06.2018 16:05
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
3
2
396
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы имеете дело с проблемой регрессии: предсказанием цены. Таким образом, переход с KNeighborsClassifier на KNeighborsRegressor решит эту проблему.

В таком случае, как мне исправить эту, последнюю строчку? Я обновил последние 3 строки кода

Debdipta Majumdar 25.06.2018 15:08

Вы не можете создать отчет о классификации для проблемы регрессии

Jan K 25.06.2018 15:25

Да, вам нужно изменить последнюю строку, так как метрики классификации бесполезны для решения задачи регрессии. Проверьте, какие метрики регрессии подходят для вашей проблемы, и либо возьмите один из при условии, либо вычислите свой собственный по мере необходимости.

Marcus V. 25.06.2018 15:25

@DebdiptaMajumdar обновляет код после, ответ был предоставлен (и принят!) - это хорошая практика нет, поскольку из-за этого ответ кажется неуместным. Вам следует либо отредактировать свой пост и указать так, либо открыть новый вопрос ...

desertnaut 25.06.2018 15:28

Другие вопросы по теме