如何在执行模型生成时处理字符串特征

数据挖掘 Python scikit-学习 熊猫 描述性统计
2022-01-21 21:59:01

我有看起来像这样的数据

shift_id    user_id status  organization_id location_id department_id   open_positions  city    zip role_id specialty_id    latitude    longitude   years_of_experience                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
2   9   S   1   1   19  1   brooklyn    48001   2   9   42.643  -82.583                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
6   60  S   12  19  20  1   test    68410   3   7   40.608  -95.856                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
9   61  S   12  19  20  1   new york    48001   1   7   42.643  -82.583                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
10  60  S   12  19  20  1   test    68410   3   7   40.608  -95.856                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         
21  3   S   1   1   19  1   pune    48001   1   2   46.753  -89.584 0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       
4   7   S   1   1   19  1   needham 2494    4   4   42.292  -71.246 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       

所以它包含字符串和数字特征。

我首先要执行特征消除,然后对其执行 SVM。

这是我的代码。

dataset = pd.read_csv("prod_data_for_ML.csv",header = 0)

#Data Pre-processing
data = dataset.drop('organization_id',1)
#data = data.drop('status',1)
#data = data.drop('city',1)

#Find median for features having NaN
median_zip, median_role_id, median_specialty_id, median_latitude, median_longitude = data['zip'].median(),data['role_id'].median(),data['specialty_id'].median(),data['latitude'].median(),data['longitude'].median() 
data['zip'].fillna(median_zip, inplace=True)
data['role_id'].fillna(median_role_id, inplace=True)
data['specialty_id'].fillna(median_specialty_id, inplace=True)
data['latitude'].fillna(median_latitude, inplace=True)
data['longitude'].fillna(median_longitude, inplace=True)

#Fill YearOFExp with 0
data['years_of_experience'].fillna(0, inplace=True)
target = dataset.location_id

#Perform Recursive Feature Extraction
svm = SVR(kernel="linear")
rfe = RFE(svm, 5, step=1)
rfe = rfe.fit(data, target) 
print(rfe.n_features_)
print(rfe.support_)


但是作为列status并且city具有字符串值,它给出 -

ValueError: could not convert string to float: 'S'

具有这样的字符串特征是显而易见的。处理这种情况的标准做法是什么?

2个回答

您需要做的就是所谓的 One Hot Encoding。有两种方法可以做到。一种是使用 Scikit -Learn 文档中描述的 Scikit-learn或使用get_dummiespandas。

示例 1:

from sklearn.preprocessing import OneHotEncoder
status_encoder = OneHotEncoder()
city_encoder = OneHotEncoder()
X = status_encoder.fit_transform(df.status.values.reshape(-1,1)).toarray()
Xm = city_encoder.fit_transform(df.city.values.reshape(-1,1)).toarray()

dfOneHot = pd.DataFrame(X, columns = ["Status_"+str(int(i)) for i in range(X.shape[1])])
df = pd.concat([df, dfOneHot], axis=1)

dfOneHot = pd.DataFrame(Xm, columns = ["City"+str(int(i)) for i in range(X.shape[1])])
df = pd.concat([df, dfOneHot], axis=1)

示例 2:

one_hot = pd.get_dummies(data=df, columns=['status', 'city'])
df = df.drop('status',axis = 1)
df = df.drop('city',axis = 1)
df = df.join(one_hot)

机器学习模型将向量(数字数组)作为输入。处理文本时,您必须做的第一件事是在将字符串输入模型之前将其转换为数字(或“矢量化”文本)的策略。

机器学习模型的性能不仅取决于模型和超参数,还取决于我们如何处理不同类型的变量*并将其提供给模型。由于大多数机器学习模型只接受数值变量,因此预处理分类变量成为必要的步骤。我们需要将这些分类变量转换为数字,以便模型能够理解和提取有价值的信息。

通常有2种分类数据:

  • 序数数据:类别在 Job Change 数据集中具有固有顺序是:[ 'education_level', 'experience','company_size','last_new_job']

  • 名义数据: Job change 数据集中没有固有顺序的类别是:(['city','gender','enrolled_university','major_discipline', 'company_type','relevent_experience',] 二进制数据可以是名义数据或有序数据)

一般来说:

在序数数据中,在编码时,应保留有关提供类别顺序的信息。

在对标称数据进行编码时,我们必须考虑是否存在特征。在这种情况下,不存在顺序的概念。


分类技术的类型:

  • 后向差分编码
  • BaseN
  • 二进制
  • CatBoost 编码器
  • 计数编码器
  • 广义线性混合模型编码器
  • 散列
  • 赫尔默特编码
  • James-Stein 编码器
  • 留下一个
  • M-估计
  • 一热
  • 序数
  • 多项式编码
  • 和编码
  • 目标编码器
  • 证据的重量
  • 包装纸
  • 分位数编码器
  • 摘要编码器

有关这些编码技术的更多详细信息,请参阅category_encoders文档

有用的链接