标签: multilabel-classification

sklearn - 预测每个班级的概率

到目前为止,我已经为另一个帖子sklearn文档提供了资源

所以一般来说我想生成以下示例:

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)
Run Code Online (Sandbox Code Playgroud)

但是对于输出,我希望每个观察看到3列作为输出pred:

 A  |  B  |  C
.5  | .2  | .3
.25 | .25 | .5
...
Run Code Online (Sandbox Code Playgroud)

每个班级出现在我的预测中的概率不同.

我相信最好的方法是Multilabel classification从我上面提供的第二个链接.另外,我认为跳入下面列出的一个multi-label或多个multi-output模型可能是一个好主意:

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
Run Code Online (Sandbox Code Playgroud)

但是,我正在寻找能够以正确的方式做到这一点的人更有信心和经验的人.所有反馈都表示赞赏.

-bmc

machine-learning probability multilabel-classification predictive

1
推荐指数
1
解决办法
4112
查看次数

如何使用 svm 预测多标签数据集

我正在使用一个包含所有十进制值和时间戳的数据集,它具有以下功能:

 1. sno
 2. timestamp
 3. v1
 4. v2
 5. v3
Run Code Online (Sandbox Code Playgroud)

我有 5 个月的数据,每分钟都有时间戳。我需要预测将来是否会随时使用 v1、v2、v3。v1、v2、v3 的值在 0 到 25 之间。

我怎样才能做到这一点 ?

我以前使用过二元分类,但我不知道如何处理多标签问题来进行预测。我一直在使用下面的代码。我应该如何训练模型以及我应该如何使用 v1、v2、v3 来适应“y”?

X_train, X_test, y_train, y_test = train_test_split(train, y, test_size=0.2)




Data:

sno power   voltage v1  v2  v3  timestamp
1   3.74    235.24  0   16  18  2006-12-16 18:03:00
2   4.928   237.14  0   37  16  2006-12-16 18:04:00
3   6.052   236.73  0   37  17  2006-12-16 18:05:00
4   6.752   237.06  0   36  17  2006-12-16 18:06:00
5   6.474   237.13  0   37  16  2006-12-16 …
Run Code Online (Sandbox Code Playgroud)

machine-learning scikit-learn multilabel-classification data-science

0
推荐指数
1
解决办法
2270
查看次数

如何修复NameError:未定义名称'X_train'?

我正在运行多标签分类1的[代码]。如何修复未定义“ X_train”的NameError。下面给出了python代码。

import scipy
from scipy.io import arff
data, meta = scipy.io.arff.loadarff('./yeast/yeast-train.arff')
from sklearn.datasets import make_multilabel_classification

# this will generate a random multi-label dataset
X, y = make_multilabel_classification(sparse = True, n_labels = 20,
return_indicator = 'sparse', allow_unlabeled = False)

# using binary relevance
from skmultilearn.problem_transform import BinaryRelevance
from sklearn.naive_bayes import GaussianNB

# initialize binary relevance multi-label classifier
# with a gaussian naive bayes base classifier
classifier = BinaryRelevance(GaussianNB())

# train
classifier.fit(X_train, y_train)

# predict
predictions = classifier.predict(X_test)

from …
Run Code Online (Sandbox Code Playgroud)

python machine-learning scikit-learn multilabel-classification scikit-multilearn

0
推荐指数
1
解决办法
3552
查看次数

MultiLabelBinarizer 在逆变换时混合数据

我正在使用sklearnmultilabelbinarizer()来训练我的机器学习中的多个列,我用它来训练我的模型。

使用它后,我注意到它在逆变换时混淆了我的数据。我创建了一组随机值的测试集,在其中拟合数据、对其进行转换,然后inverse_transform将数据恢复为原始数据。

我进行了一个简单的测试jupyter笔记本上进行了一个简单的测试以显示错误:

inverse_transformed第 1 行的值中,它混淆了州和月份。

jupyter笔记本代码

首先,我的使用方式是否有错误multilabelbinarizer?有没有不同的方法来实现相同的输出?

编辑: 感谢@Nicolas M. 帮助我解决我的问题。我最终像这样解决了这个问题。

请原谅我的粗略解释,但结果比我最初想象的要复杂。我改用 thelabel_binarizer而不是multi_label_binarizer因为它

我最终腌制了label_binarizer defaultdict以便我可以加载它并在我的机器学习项目的不同模块中使用它。

一件可能不简单的事情是我向为每一列制作的数据帧添加新标题。它采用列名+列号的形式。我这样做是因为我需要对数据进行逆变换。为此,我搜索了包含原始列名称的列,该列名称将较大的数据帧分隔成各个列块。

这里是我使用的一些变量及其含义供参考:
lb_dict- 存储不同标签二值化器的默认字典。
binarize_df- 存储二进制数据的数据框。
binarized_label- label 将列中的一个标签二值化。
header- 创建一个新的标题形式:列名+数字列。

inverse_df- 存储逆变换数据的数据帧。
one_label_list- 查找具有原始列标签的列名称列表。
one_label_df- 创建一个新的数据框,仅存储一列的二值化数据。
single_label- 被反向转换成一列的二值化数据。

在此代码中,数据是我传递给函数的数据帧。

lb_dict = defaultdict(LabelBinarizer)
# create a place holder dataframe to join new binarized data to
binarize_df = pd.DataFrame(['x'] …
Run Code Online (Sandbox Code Playgroud)

python machine-learning pandas multilabel-classification sklearn-pandas

-3
推荐指数
1
解决办法
1097
查看次数