У меня есть простой пример в scikit-learn для прогнозирования. Вот мой файл данных (data.csv):
first second third target1 target2
800 400 240 400 25
400 200 120 200 50
200 100 60 100 100
100 50 30 50 200
50 25 15 25 400
функции включают в себя: первое, второе и третье
цели включают в себя: target1 и target2
Теперь я хочу предоставить новые значения для объектов и прогнозировать target1 и target2. Как видите, существует тенденция между значениями объектов и значениями target1 и target2:
При удвоении значений признаков значение target1 также удваивается, а значение target2 уменьшается вдвое
Например, если я предоставлю значения: 1600, 800 и 480 для первой, второй и третьей функций, я ожидаю получить 800 и 12,5 для target1 и target2 соответственно. Вот код:
import pandas as pd
from sklearn.model_selection import train_test_split
from collections import *
from sklearn.linear_model import LinearRegression
features = pd.read_csv('data.csv')
features.head()
features_name = ['first' , 'second' , 'third']
target_name = ['target1','target2']
X = features[features_name]
y = features[target_name]
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.155, random_state = 42)
linear_regression_model = LinearRegression()
linear_regression_model.fit(X_train,y_train)
new_data = OrderedDict([('first',1600) ,('second',800),('third',480) ])
new_data = pd.Series(new_data).values.reshape(1,-1)
ss = linear_regression_model.predict(new_data)
print (ss)
Вот вывод:
[[ 800. -284.58549223]]
Как вы можете видеть, прогнозируемое значение для target1 точно соответствует ожидаемому , в то время как прогнозируемое значение для target2 (-284.58) далеко от ожидаемого (12.5)
Кто-нибудь знает, что здесь не так и как я могу решить эту проблему? Заранее спасибо за помощь.