why this error appears and what does it mean exactly?
It appears on this code (I put only the part of machine learning, because the code is so long):
import numpy as np
from sklearn import neighbors
n_neighbors = 3
if (automatic == 'true'):
# import some data to play with
home = Homes.query.filter_by(device_id = request.args.get('?device_id')).first()
htng_orders = Heating_orders.query.filter_by(home_id = home.id).all()
X_h = [[ho.timeInMinutes, ho.season, ho.ext_temp] for ho in htng_orders]
y_h = [ho.instruction for ho in htng_orders]
clf_h = neighbors.KNeighborsClassifier(n_neighbors, weights='distance')
clf_h.fit(X_h, y_h)
new_time = datetime.datetime.now().time()
new_timeInMinutes = (new_time.hour*60 + new_time.minute)
new_season = get_season(date.today())
new_ext_temp = getExtTemperature(home.city)
new_data_h = np.c_[new_timeInMinutes, new_season, new_ext_temp]
preddiction_h = clf_h.predict(new_data_h)
The error is the following:
[...]
File "C:[...]FlaskRESTapp.py", line 525, in get
new_data_h = np.c_[new_timeInMinutes, new_season, new_ext_temp]
File "C:PythonPython36-32libsite-packagesnumpylibindex_tricks.py", line 289, in __getitem__
raise ValueError("special directives must be the "
ValueError: special directives must be the first entry.
Thank you in advance!
Advertisement
Answer
Looking at what the code is doing I don’t think you should have np.c_ there at all. The model is trained on a triplets of (TimeInMinutes, season, ext_temp), so you’ll want to pass that same data format into the .predict function.
new_data_h should be
new_data_h = [new_timeInMinutes, new_season, new_ext_temp]
just in case you’re curious
https://docs.scipy.org/doc/numpy/reference/generated/numpy.c_.html