Machine learning sklearn-预测每个类';s概率
到目前为止,我已经提供了资源和 一般来说,我想给出以下示例:Machine learning sklearn-预测每个类';s概率,machine-learning,probability,multilabel-classification,predictive,Machine Learning,Probability,Multilabel Classification,Predictive,到目前为止,我已经提供了资源和 一般来说,我想给出以下示例: X = np.matrix([[1,2],[2,3],[3,4],[4,5]]) y = np.array(['A', 'B', 'B', 'C', 'D']) Xt = np.matrix([[11,22],[22,33],[33,44],[44,55]]) model = model.fit(X, y) pred = model.predict(Xt) 然而,对于输出,我希望看到每个观测值有3列作为pred的输出: A |
X = np.matrix([[1,2],[2,3],[3,4],[4,5]])
y = np.array(['A', 'B', 'B', 'C', 'D'])
Xt = np.matrix([[11,22],[22,33],[33,44],[44,55]])
model = model.fit(X, y)
pred = model.predict(Xt)
然而,对于输出,我希望看到每个观测值有3列作为
pred
的输出:
A | B | C
.5 | .2 | .3
.25 | .25 | .5
...
在我的预测中,每一类出现的概率不同
我相信最好的方法是我上面提供的第二个链接中的多标签分类
。此外,我认为跳到下面列出的多标签
或多输出
型号之一可能是个好主意:
Support multilabel:
sklearn.tree.DecisionTreeClassifier
sklearn.tree.ExtraTreeClassifier
sklearn.ensemble.ExtraTreesClassifier
sklearn.neighbors.KNeighborsClassifier
sklearn.neural_network.MLPClassifier
sklearn.neighbors.RadiusNeighborsClassifier
sklearn.ensemble.RandomForestClassifier
sklearn.linear_model.RidgeClassifierCV
Support multiclass-multioutput:
sklearn.tree.DecisionTreeClassifier
sklearn.tree.ExtraTreeClassifier
sklearn.ensemble.ExtraTreesClassifier
sklearn.neighbors.KNeighborsClassifier
sklearn.neighbors.RadiusNeighborsClassifier
sklearn.ensemble.RandomForestClassifier
然而,我正在寻找一个谁是有更多的信心和经验,在这样做的正确方式。感谢所有反馈
-bmc据我所知,您希望获得多类分类器的每个潜在类的概率 在Scikit学习中,它可以通过泛型函数predict_proba完成。它是为scikit learn中的大多数分类器实现的。你基本上称之为:
clf.predict_proba(X)
其中clf
是经过训练的分类器。
作为输出,对于每个输入值,您将获得每个类的十进制概率数组
警告一句——并非所有的分类器都能自然地评估类概率。例如,SVM不能做到这一点。不过,您仍然可以获得类概率,但在构建此类分类器时,您需要指示它执行概率估计。对于SVM,它看起来像:
SVC(Probability=True)
安装后,您将能够像以前一样使用predict\u proba
我需要提醒你们,如果分类器不能自然地评估概率,这意味着概率将使用相当广泛的计算方法进行评估,这可能会显著增加训练时间。因此,我建议您使用自然评估类别概率的分类器(具有softmax输出的神经网络、逻辑回归、梯度增强等)据我所知,您希望获得多类别分类器的每个潜在类别的概率 在Scikit学习中,它可以通过泛型函数predict_proba完成。它是为scikit learn中的大多数分类器实现的。你基本上称之为:
clf.predict_proba(X)
其中clf
是经过训练的分类器。
作为输出,对于每个输入值,您将获得每个类的十进制概率数组
警告一句——并非所有的分类器都能自然地评估类概率。例如,SVM不能做到这一点。不过,您仍然可以获得类概率,但在构建此类分类器时,您需要指示它执行概率估计。对于SVM,它看起来像:
SVC(Probability=True)
安装后,您将能够像以前一样使用predict\u proba
我需要提醒你们,如果分类器不能自然地评估概率,这意味着概率将使用相当广泛的计算方法进行评估,这可能会显著增加训练时间。因此,我建议您使用能够自然评估类别概率的分类器(具有softmax输出的神经网络、逻辑回归、梯度增强等)尝试使用校准模型:
# define model
model = SVC()
# define and fit calibration model
calibrated = CalibratedClassifierCV(model, method='sigmoid', cv=5)
calibrated.fit(trainX, trainy)
# predict probabilities
print(calibrated.predict_proba(testX)[:, 1])
尝试使用校准模型:
# define model
model = SVC()
# define and fit calibration model
calibrated = CalibratedClassifierCV(model, method='sigmoid', cv=5)
calibrated.fit(trainX, trainy)
# predict probabilities
print(calibrated.predict_proba(testX)[:, 1])
你能澄清一下你到底想要什么答案吗?基本上,multilable是将预定义标签集中的>=0标签附加到输入示例。它可能没有标签,一个标签或一堆标签。至于多类情况下的概率输出——对于所有类型的分类器,大多数情况下都可以使用predict|u proba函数获得它。“但是对于输出,我希望每个观测值有3列作为pred的输出:A | B | C.5 |。2 |。3.25 |。25 |。5…”是我例外的输出。predict_proba是否为每个可能的标签返回一个概率?是的,它基本上是sklearn为每个多类分类器尝试实现的一个函数。但是对于一些算法(比如svm,它不自然地提供概率估计),您需要首先向分类器传递一条指令,希望它在训练期间估计类概率。例如,对于svm,它是svc(概率=真)。然后predict_Probaba会给你每门课的概率。你能澄清一下你到底想要什么答案吗?基本上,multilable是将预定义标签集中的>=0标签附加到输入示例。它可能没有标签,一个标签或一堆标签。至于多类情况下的概率输出——对于所有类型的分类器,大多数情况下都可以使用predict|u proba函数获得它。“但是对于输出,我希望每个观测值有3列作为pred的输出:A | B | C.5 |。2 |。3.25 |。25 |。5…”是我例外的输出。predict_proba是否为每个可能的标签返回一个概率?是的,它基本上是sklearn为每个多类分类器尝试实现的一个函数。但是对于一些算法(比如svm,它不自然地提供概率估计),您需要首先向分类器传递一条指令,希望它在训练期间估计类概率。例如,对于svm,它是svc(概率=真)。然后predict_Probaba将为您提供每个类的概率。您如何知道它为哪个标签提供概率的顺序?例如,
y\u pred=clf.predict\u proba(X\u test\u tfidf[:len(df\u test)])
生成此输出数组([0.29354825,0.08547672,0.62097503],[0.75855171,0.13965677,0.10179152],[0.39376194,0.50768248,0.09855559],…,[0.78636186,0.08047552,0.13316294],[,[0.32583947,0.06651614,0.60764439],[0.36811811,0.53192139,0.0999605])
我如何知道第一、第二和第三个因子代表的是什么?@bmc使用clf.classes,这将为您提供正确的顺序您如何知道它给出概率的标签的顺序