Я хочу создать контурную диаграмму для прогноза с несколькими функциями. Остальные значения должны быть зафиксированы, чтобы построить 2 интересных значения. К сожалению, итоговая матрица имеет одинаковое значение на всех позициях вместо ожидаемого.
Я думаю, что с моими матрицами что-то не так, но я не нахожу ошибку.
[...]
f_learn = [x_1,x_2,x_3,x_4]
r_lear = [r_1]
clf = svm.MLPRegressor(...)
clf.fit(f_learn,r_learn)
[...]
x_1 = np.linspace(1, 100, 100)
x_2 = np.linspace(1, 100, 100)
X_1, X_2 = np.meshgrid(x_1, x_2)
x_3 = np.full( (100,100), 5).ravel()
x_4 = np.full( (100,100), 15).ravel()
predict_matrix = np.vstack([X_1.ravel(), X_2.ravel(), x_3,x_4])
prediction = clf.predict(predict_matrix.T)
prediction_plot = prediction.reshape(X_1.shape)
plt.figure()
cp = plt.contourf(X_1, X_2, prediction_plot, 10)
plt.colorbar(cp)
plt.show()
Если я тестирую матрицу построчно, я получаю правильные результаты. Однако это не сработает, если я соберу их вместе таким образом.
Редактировать: ошибка при копировании кода
Пример с данными. Все ответы 7,5 и не разные; (
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
f_learn = np.array([[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]])
r_learn = np.array([6,7,8,9])
reg = linear_model.LinearRegression()
reg.fit (f_learn, r_learn)
x_1 = np.linspace(0, 20, 10)
x_2 = np.linspace(0, 20, 10)
X_1, X_2 = np.meshgrid(x_1, x_2)
x_3 = np.full( (10,10), 5).ravel()
x_4 = np.full( (10,10), 2).ravel()
predict_matrix = np.vstack([X_1.ravel(), X_2.ravel(), x_3, x_4])
prediction = reg.predict(predict_matrix.T)
prediction_plot = prediction.reshape(X_1.shape)
plt.figure()
cp = plt.contourf(X_1, X_2, prediction_plot, 10)
plt.colorbar(cp)
plt.show()
Результат