gpt4 book ai didi

python - 如何根据预测的类附加到 Pandas Dataframe

转载 作者:行者123 更新时间:2023-12-01 03:26:00 24 4
gpt4 key购买 nike

我的 Pandas DataFrame 在列中保存机器学习问题的所有可能类别,分配给条目的值具有其概率的含义。

接下来,我有一个机器学习模型,可以对列车案例进行类别预测。

现在我想为每个预测添加一个新行,其中分配给预测类的列中的值变为 1。

如何以高效且优雅的方式附加到依赖于预测类的 Pandas Dataframe?

这是一些最小的示例代码,可以满足我的需求:

import pandas as pd
import numpy as np

predictions = np.array(['classB', 'classB', 'classC'])
data = pd.DataFrame(columns=['classA', 'classB', 'classC'])

print "Data before:"
print data

for i in range(len(predictions)):
if predictions[i] == "classA":
data.loc[i] = [1, 0, 0]
if predictions[i] == "classB":
data.loc[i] = [0, 1, 0]
if predictions[i] == "classC":
data.loc[i] = [0, 0, 1]

print "Data after:"
print data

输入:

 Empty Dataframe, prediction = ['classB', 'classB', 'classC']

输出:

   classA  classB  classC
0 0.0 1.0 0.0
1 0.0 1.0 0.0
2 0.0 0.0 1.0

最佳答案

您可能需要考虑使用 pandas.DataFrame.merge摆脱 forif 构造。

您将创建一个 pandas 数据框,将类映射到其概率(例如“classA”:[1,0,0])。然后将此映射与预测的类合并。

示例:

import pandas as pd
import numpy as np

classes = ['classA', 'classB', 'classC']

predictionProbabilityMapping = pd.DataFrame(index=classes, columns=classes, data=[
[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
])

def convertProbabilities(predictions):
predictionsDf = pd.DataFrame(columns=['classification'], data=predictions)
return pd.merge(predictionsDf,
predictionProbabilityMapping,
left_on='classification', right_index=True)[classes]

predictions = np.array(['classB', 'classB', 'classC'])
print convertProbabilities(predictions)

其产量:

       classA  classB  classC
0 0 1 0
1 0 1 0
2 0 0 1

关于python - 如何根据预测的类附加到 Pandas Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41396766/

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