gpt4 book ai didi

python - 在 Pandas 中形成稀疏特征矩阵数据框

转载 作者:太空宇宙 更新时间:2023-11-04 05:40:37 26 4
gpt4 key购买 nike

我想扩展此数据框的“特征”列,以便创建一个新的数据框,其中这些特征成为列名称。

例如。由此,

Raw matrix

对此,

Features matrix

我的解决方案有效,但我认为它不是很好,因为有很多 for 循环。也许有更好的方法利用 Pandas.DataFrame 类的特性?

生成特征矩阵的代码如下,

def feature_data_frame_by_exploding_column(input_df, col_name):

# Create data frame with same columns minus the column you want to explode
df = input_df.copy()
del df[col_name]

# The items that you want to become new features
all_new_features = []
new_feature_list = input_df[col_name].values
for ingred_list in new_feature_list:
all_new_features.extend(ingred_list) # Extend vs append!

# Add new features as columns of zeros
for feature in all_new_features:
df[feature] = 0

# For each row in data frame set values that need to be 1
for index in df.index:
ingreds_arr = new_feature_list[index]
df.loc[index, ingreds_arr] = 1

return df

df = pd.DataFrame(columns = ["id", "features"])
df['id'] = [0,1]
df['features'] = [["A", "B"], ["C", "D"]]
df

feature_data_frame_by_exploding_column(df,"features")

最佳答案

Scikit 学习的 MultiLabelBinarizer从标签创建一个二进制矩阵。您可以从 pandas 数据框中提取 feature 列并应用它:

mlb = MultiLabelBinarizer()
new_array = mlb.fit_transform(feature)

此外,通过指定 MultiLabelBinarizer(sparse_output=True),您将获得真正稀疏的输出(如果不同特征的数量很大,则很有用)。


示例输出:

>>> MultiLabelBinarizer().fit_transform([["A", "B"], ["C", "D"]])
array([[1, 1, 0, 0],
[0, 0, 1, 1]])

关于python - 在 Pandas 中形成稀疏特征矩阵数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34052903/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com