如果我的变量包含在数组中,我可以在sklearn中运行ML模型吗?

目前我的数据集如下:

Injury_Type  Organ      PositionGroup    Age          speed[injured]      [back]         LW           30.929500      5.239167 [torn]     [biceps]       CB           26.26          4.53[torn]     [ACL]          LB           26.15          4.44

还有更多类似的行,关联了球员受伤的类型、受伤的器官、他们所打的位置以及他们的年龄和速度。我的目标是预测球员将缺席的比赛场数。我正在尝试训练一个模型来预测球员将缺席的比赛场数。

一些列是存储在数组中的,这在我在sklearn中运行模型时遇到了一些问题。我该如何解决这个问题?我是sklearn的新手,如果你们有关于预测球员缺席比赛场数的过程的任何反馈,那将非常有帮助。我正在尝试构建一个随机森林分类器,首先查看特征重要性,然后进行K折交叉验证,缩放特征,最后在几个ML算法上训练模型。

你认为这是个好方法吗?你会建议做任何改变吗?


回答:

你应该使用CountVectorizer。在这里你可以将多个项目放入数组中。

对于Injury_Type,可以是['back','leg'],对于Organ,也可以接受多个输入。

CountVectorizer会将每个独特的项目转换成一个虚拟变量。从那时起,你可以使用这些列来训练一个新模型。

import pandas as pdimport astdata = pd.read_csv('injury.txt',sep=';',converters={'Injury_Type': ast.literal_eval, 'Organ': ast.literal_eval})dataInjury_Type Organ   PositionGroup   Age speed   daysmissing0   [back]  [back]  LW  30.9295 5.239167    201   [torn]  [biceps]    CB  26.2600 4.530000    102   [torn]  [ACL]   LB  26.1500 4.440000    5data['Injury_Type']data['Injury_Type_String'] = [' '.join(l) for l in data['Injury_Type']]data['Organ']data['Organ_String'] = [' '.join(l) for l in data['Organ']]from sklearn.feature_extraction.text import CountVectorizervectorizer = CountVectorizer()X = vectorizer.fit_transform(list(data['Organ_String']))Organ_df = pd.DataFrame(X.toarray(),columns=vectorizer.get_feature_names())Organ_dfacl back    biceps0   0   1   01   0   0   12   1   0   0Y = vectorizer.fit_transform(list(data['Injury_Type_String']))Injury_Type_df = pd.DataFrame(Y.toarray(),columns=vectorizer.get_feature_names())Injury_Type_dfback    torn0   1   01   0   12   0   1data = pd.concat([data,Organ_df],axis=1)data = pd.concat([data,Injury_Type_df],axis=1)del data['Injury_Type']del data['Injury_Type_String']del data['Organ']del data['Organ_String']print(data)  PositionGroup      Age     speed  daysmissing  acl  back  biceps  back  torn0            LW  30.9295  5.239167           20    0     1       0     1     01            CB  26.2600  4.530000           10    0     0       1     0     12            LB  26.1500  4.440000            5    1     0       0     0     1
PositionGroup_df = pd.get_dummies(data['PositionGroup'])data = pd.concat([data,PositionGroup_df],axis=1)del data['PositionGroup']print(data)       Age     speed  daysmissing  acl  back  biceps  back  torn  CB  LB  LW0  30.9295  5.239167           20    0     1       0     1     0   0   0   11  26.2600  4.530000           10    0     0       1     0     1   1   0   02  26.1500  4.440000            5    1     0       0     0     1   0   1   0y = data.pop('daysmissing')X = datafrom sklearn.ensemble import RandomForestRegressorregr = RandomForestRegressor()regr.fit(X,y)

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注