【发布时间】:2019-06-07 13:21:46
【问题描述】:
我在 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。可以看到,features 的值与 target1 和 target2 的值之间有一个趋势:
通过将特征值加倍,target1 的值也加倍,而 target2 的值减半
例如,如果我为第一个、第二个和第三个特征提供值:1600、800 和 480,我希望 target1 和 target2 分别得到 800 和 12.5。代码如下:
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]]
如您所见,目标 1 的预测值正是预期值而目标 2 的预测值 (-284.58) 与预期值 (12.5) 相差甚远
有谁知道这里出了什么问题以及如何解决这个问题?在此先感谢您的帮助。
【问题讨论】:
-
问题与
random-forest无关(标签已删除并替换为linear-regression)。
标签: python machine-learning scikit-learn linear-regression