Machine learning 如何使用定长列表进行预处理?

Machine learning 如何使用定长列表进行预处理?,machine-learning,scikit-learn,data-processing,Machine Learning,Scikit Learn,Data Processing,我想用以下数据训练我的回归模型使用sklearn,并用它预测其他参数给出的收入: 但我在尝试适合我的模型时遇到了一些问题 from sklearn import linear_model model = linear_model.LinearRegression() train_x = np.array([ [['Tom','Adam'], '005', 50], [['Tom'], '001', 100], [['Tom', 'Adam', 'Alex'], '0

我想用以下数据训练我的回归模型使用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在所有ArrayStaff_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   |    ?  |

您的模型将很容易了解和识别每个员工,并更快地收敛到解决方案