训练完任何分类器后,分类器便会得出数据点属于某个类的概率。
y_pred = clf.predict_proba(test_point)
分类器是使用最大概率预测类,还是根据分布绘制分布时考虑概率?
换句话说,假设输出概率为-
C1 - 0.1 C2 - 0.2 C3 - 0.7
输出将始终是C3还是只有70%的次数?
答案 0 :(得分:1)
当clf预测时,它不会计算每个类别的可能性。它将使用完全连接获取类似[itemsnum,classisnum]的数组,然后可以使用max output [1]获取items类 顺便说一句,在CLF训练中,它使用softmax来获取每个类的可能,这样可以更平滑地优化您可以找到一些关于 softmax 的文档,如果您对训练过程感兴趣的话
答案 1 :(得分:0)
如何从类别概率分数转到类别,通常称为“决策函数”,通常被认为与分类器本身是分开的。在scikit-learn中,许多估计器都有一个默认决策函数,可通过final Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
ContentResolver resolver = c.getContentResolver();
String currentTitle = MediaStore.Audio.Media.TITLE;
String currentArtist = MediaStore.Audio.Media.ARTIST;
String currentAlbumID = MediaStore.Audio.Media.ALBUM_ID;
String currentAlbum = MediaStore.Audio.Media.ALBUM;
String currentGenreID = MediaStore.Audio.Genres._ID;
String currentGenreName = MediaStore.Audio.Genres.NAME;
String currentAlbumData = MediaStore.Audio.Media.DATA;
String currentYear = MediaStore.Audio.Media.YEAR;
ContentValues values = new ContentValues();
values.put(currentTitle, title);
values.put(currentArtist, artist);
values.put(currentAlbum, album);
values.put(currentYear, year);
//Update song info.
String where = MediaStore.Audio.Media._ID + "=?";
String[] whereVal = {Long.toString(songID)};
resolver.update(musicUri, values, where, whereVal);
访问多类问题,该决策函数通常只返回最大值(argmax函数)。
但是,可以根据需要以各种方式进行扩展。例如,如果一个预测的影响之一是非常昂贵的,那么一个人可能会降低这些概率的权重(类别加权)。或者可以有一个决策函数,如果置信度很高,则仅给出一个类作为输出,否则返回错误或后备类。
一个也可以具有多标签分类,那里的输出不是单个类,而是一个类列表。 predict()
-> [ 0.6, 0.1, 0.7, 0.2 ]
然后,它们可以使用公共阈值或每个类别的阈值。这在标记问题中很常见。
但是在几乎所有情况下,决策函数都是确定性函数,而不是概率性函数。