如何在预测时使用pandas.get_dummies

为了运行深度学习模型,我需要将分类值列转换。在训练时,我使用pd.get_dummies(data=data, dummy_na=True),效果很好。

但在实时环境中,如预期的那样,每列都会出现一些新的类别。因此,我需要为所有这些类别设置一个’column_name_nan’。由于get_dummies不提供这种功能,我自己编写了代码。我将训练时的列保存到文件中,并在预测时使用这些列。但对于像100万条数据这样的大数据,这需要很多时间。以下是我的代码。

def populate_data_frame_in_prediction_time(data, columns):    unknown_col = "nan"    columns_set = set(columns)    result_data_frame = pd.DataFrame(0, index=np.arange(len(data)), columns=columns)    for prefix in data.columns: # O(m)        unknown_column_name = str(prefix) + "_" + str(unknown_col)        for index, row in data.iterrows(): #O(n)            value = row[prefix]            result_column_name = str(prefix) + "_" + str(value)            if result_column_name not in columns_set: # O(1)                result_column_name = unknown_column_name            result_data_frame[result_column_name][index] = 1    result_data_frame = result_data_frame.astype('uint8')    return result_data_frame

你们有更好的解决方案吗?

假设

    training_data = pd.DataFrame({'City': ['Delhi', None, 'Hyderabad', 'Delhi', 'Hyderabad'],                         'Country': ['D', 'H', 'D', 'H', None]})    real_time_data = pd.DataFrame({'City': ['Delhi', None, 'Dhaka'],  # })                                   'Country': [None, "H", "B"]})    #encoded_columns_in_training_time_to_use_it_on_prediction_time{'City': ['City_Delhi', 'City_Hyderabad', 'City_nan'], 'Country': ['Country_D', 'Country_H', 'Country_nan']}

回答:

最后,我解决了我的问题。以下是详细信息。https://dev.to/imsazzad/populate-data-frame-faster-from-4-hours-to-15-second-557e

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中创建了一个多类分类项目。该项目可以对…

发表回复

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