我想使用以下数据训练sklearn的回归模型,并使用它来预测其他参数给定的收益:
但是当我尝试拟合模型时遇到了一些问题。
from sklearn import linear_model
model = linear_model.LinearRegression()
train_x = np.array([
[['Tom','Adam'], '005', 50],
[['Tom'], '001', 100],
[['Tom', 'Adam', 'Alex'], '001', 150]
])
train_y = np.array([
50,
80,
90
])
model.fit(train_x,train_y)
>>> ValueError: setting an array element with a sequence.
我已经进行了一些搜索,问题是train_x在所有数组(staff_id)中没有相同数量的元素。而且我认为也许我应该在一些数组中添加一些其他元素以使长度保持一致。但我不知道如何准确地执行此步骤。这称为“向量化”吗?
机器学习模型不能将此类列表作为输入。它将您的列表视为字符列表(因为您的列表包含字符串,并且每个字符串都是字符序列),并且可能不会学到任何东西。通常,数组用作处理时间序列数据的模型的输入,例如在NLP中,每个记录都是一个时间戳,其中包含要处理的单词列表。
而不是将数组填充为相同的大小(如您建议的那样,应将列表“分解”为不同的列。再创建3列-每个员工姓名分别为:Tom,Adam和Alex。如果名称出现在列表中,则其单元格的值为1,否则为0。
所以您的表应如下所示:
-------------------------------------------------------------------
staff_Tom | staff_Adam | staff_Alex | Manager_id | Budget | Revenue
-------------------------------------------------------------------
1 | 1 | 0 | 5 | 50 | 50 |
1 | 0 | 0 | 1 | 100 | 80 |
1 | 1 | 1 | 1 | 150 | 90 |
....
1 | 0 | 1 | 1 | 75 | ? |
您的模型将轻松地了解并识别每个工作人员,并将更快地收敛到解决方案。