В настоящее время я использую TensorFlow и SkLearn, чтобы попытаться создать модель, которая может прогнозировать объем продаж для определенного продукта X на основе температуры наружного воздуха в градусах Цельсия.
Я взял свои наборы данных для температуры и установил ее равной переменной x, а количество продаж в качестве переменной yy.Как видно на рисунке ниже, существует некоторая корреляция между температурой и объемом продаж:
Прежде всего, я пыталсясделать линейную регрессию, чтобы увидеть, насколько хорошо это будет соответствовать.Вот код для этого:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(x_train, y_train) #fit tries to fit the x variable and y variable.
#Let's try to plot it out.
y_pred = model.predict(x_train)
plt.scatter(x_train,y_train)
plt.plot(x_train,y_pred,'r')
plt.legend(['Predicted Line', 'Observed data'])
plt.show()
Это привело к предсказанной линии, которая имела довольно плохое соответствие:
Тем не менее, очень хорошая особенность sklearn - вы можете попытаться предсказать значение, основанное на температуре, поэтому, если бы я написал:
model.predict(15)
, я получил бы вывод
array([6949.05567873])
Это именно то, что я хочу, я просто хотел, чтобы линия соответствовала лучше, поэтому вместо этого я попробовал полиномиальную регрессию с помощью sklearn, выполнив следующее:
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=8, include_bias=False) #the bias is avoiding the need to intercept
x_new = poly.fit_transform(x_train)
new_model = LinearRegression()
new_model.fit(x_new,y_train)
#plotting
y_prediction = new_model.predict(x_new) #this actually predicts x...?
plt.scatter(x_train,y_train)
plt.plot(x_new[:,0], y_prediction, 'r')
plt.legend(['Predicted line', 'Observed data'])
plt.show()
Теперь линия выглядит лучше:
Моя проблема не в том, что я не могу использовать new_model.predict (x), так как это приведет к "ValueError: shape (1,1) и (8,) notвыровнен: 1 (тусклый 1)! = 8 (тусклый 0) ".Я понимаю, что это потому, что я использую 8-градусный полиномиум, но есть ли какой-либо способ для меня, чтобы предсказать у-ось на основе ОДНОЙ температуры с использованием модели полиномиальной регрессии?