2017-11-11 356 views

回答

0

你可以對它們使用正弦和餘弦變換!當然,你的模型不會完美地預測它們,所以你需要在預測後重新標準化你的結果。請參閱示例代碼:

# predicting the angle (in radians) 
import numpy as np 
from sklearn.neural_network import MLPRegressor 
from sklearn.model_selection import cross_val_predict 
from sklearn.metrics import r2_score 
# generate toy data 
np.random.seed(1) 
X = np.random.normal(size=(100, 2)) 
y = np.arctan2(np.dot(X, [1,2]), np.dot(X, [3,0.4])) 
# simple prediction 
model = MLPRegressor(random_state=42, activation='tanh', max_iter=10000) 
y_simple_pred = cross_val_predict(model, X, y) 
# transformed prediction 
joint = cross_val_predict(model, X, np.column_stack([np.sin(y), np.cos(y)])) 
y_trig_pred = np.arctan2(joint[:,0], joint[:,1]) 
# compare 
print(r2_score(y, y_simple_pred)) # R^2 about 0.53 
print(r2_score(y, y_trig_pred)) # R^2 about 0.85