我不确定如何在以下情况下解释Keras的默认行为:
我的Y(基本事实)是使用scikit-learn's MultilabelBinarizer()建立的.
因此,为了给出一个随机的例子,我的y列的一行是单热编码的:
[0,0,0,1,0,1,0,0,0,0,1].
所以我有11个可以预测的课程,不止一个可以成真; 因此问题的多标签性质.这个特定样品有三个标签.
我像我一样训练模型用于非多标签问题(照常营业),我没有错误.
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
model = Sequential()
model.add(Dense(5000, activation='relu', input_dim=X_train.shape[1]))
model.add(Dropout(0.1))
model.add(Dense(600, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(y_train.shape[1], activation='softmax'))
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
optimizer=sgd,
metrics=['accuracy',])
model.fit(X_train, y_train,epochs=5,batch_size=2000)
score = model.evaluate(X_test, y_test, batch_size=2000)
score
Run Code Online (Sandbox Code Playgroud)
当Keras遇到我y_train并且看到它是"多"单热编码时会做什么,这意味着每一行中存在多个"一" y_train?基本上,Keras会自动执行多标签分类吗?评分指标的解释有何不同?
文本数据被组织为具有20,000个元素的向量,如[2,1,0,0,5,....,0].第i个元素表示文本中第i个单词的频率.
地面实况标签数据也表示为具有4,000个元素的向量,如[0,0,1,0,1,......,0].第i个元素指示第i个标签是否是文本的肯定标签.文本的标签数量因文本而异.
我有一个单标签文本分类的代码.
如何编辑以下代码进行多标签文本分类?
特别是,我想知道以下几点.
谢谢.
import tensorflow as tf
# hidden Layer
class HiddenLayer(object):
def __init__(self, input, n_in, n_out):
self.input = input
w_h = tf.Variable(tf.random_normal([n_in, n_out],mean = 0.0,stddev = 0.05))
b_h = tf.Variable(tf.zeros([n_out]))
self.w = w_h
self.b = b_h
self.params = [self.w, self.b]
def output(self):
linarg = tf.matmul(self.input, self.w) + self.b
self.output = tf.nn.relu(linarg)
return self.output
# output Layer
class OutputLayer(object):
def __init__(self, input, n_in, n_out):
self.input = input
w_o = tf.Variable(tf.random_normal([n_in, n_out], mean = 0.0, stddev …Run Code Online (Sandbox Code Playgroud) python text-classification multilabel-classification tensorflow
我想知道如何计算多类多标签分类的精度和召回度量,即分类中有多于两个标签,每个实例可以有多个标签?
classification machine-learning multilabel-classification precision-recall
有人可以解释(举例说明)scikit-learn中OneVsRestClassifier和MultiOutputClassifier之间的区别是什么?
我已阅读文档,我知道我们使用:
我已经使用OneVsRestClassifier进行多标签分类,我可以理解它是如何工作的,但后来我找到了MultiOutputClassifier,并且无法理解它与OneVsRestClassifier的工作方式有何不同.
python classification scikit-learn multilabel-classification multiclass-classification
我有一个有多个标签的图像数据集; 数据集中有100个类,每个图像都有1到5个与之关联的标签.
我正在按照以下URL中的说明操作:
https://github.com/BVLC/caffe/issues/550
它说我需要生成一个文本文件,列出图像及其标签,如
Run Code Online (Sandbox Code Playgroud)/home/my_test_dir/picture-foo.jpg 0 /home/my_test_dir/picture-foo1.jpg 1
在我的情况下,由于我有多标签图像,它是否可以简单地添加标签,如下所示?
Run Code Online (Sandbox Code Playgroud)/home/my_test_dir/picture-foo.jpg 0 2 5 /home/my_test_dir/picture-foo1.jpg 1 4
我有一种感觉,它可能不会那么简单,如果我是对的,在什么步骤,我应该如何在设置Caffe的过程中整合数据集的多标签?
neural-network multilabel-classification deep-learning caffe
问题:我正在训练多标签图像识别模型.因此,我的图像与多个y标签相关联.这与ImageDataGenerator的方便的keras方法"flow_from_directory"相冲突,其中每个图像应该位于相应标签的文件夹中(https://keras.io/preprocessing/image/).
解决方法:目前,我正在将所有图像读入一个numpy数组并从那里使用"flow"函数.但这会导致大量内存负载和缓慢的读入过程.
问题:有没有办法使用"flow_from_directory"方法并手动提供(多个)类标签?
更新:我最终扩展了多标签案例的DirectoryIterator类.您现在可以将属性"class_mode"设置为值"multilabel",并提供字典"multlabel_classes",它将文件名映射到其标签.代码:https://github.com/tholor/keras/commit/29ceafca3c4792cb480829c5768510e4bdb489c5
python image-processing multilabel-classification deep-learning keras
是否可以使用xgboost进行多标签分类?现在我使用OneVsRestClassifier而不是sklearn的GradientBoostingClassifier.它可以工作,但只使用我的CPU中的一个核心.在我的数据中,我有~45个功能,任务是用二进制(布尔)数据预测大约20列.度量标准是平均精度(map @ 7).如果你有一个简短的代码分享示例,那就太好了.
我正在尝试运行一项使用简单变压器 Roberta 模型进行分类的服务。测试时,推理脚本/函数本身按预期工作。当我将其包含在快速 API 中时,它会关闭服务器。
\nuvicorn==0.11.8\nfastapi==0.61.1\nsimpletransformers==0.51.6\ncmd : uvicorn --host 0.0.0.0 --port 5000 src.main:app\nRun Code Online (Sandbox Code Playgroud)\n@app.get("/article_classify")\ndef classification(text:str):\n """function to classify article using a deep learning model.\n Returns:\n [type]: [description]\n """\n\n _,_,result = inference(text)\n return result\nRun Code Online (Sandbox Code Playgroud)\n错误 :
\nINFO: Started server process [8262]\nINFO: Waiting for application startup.\nINFO: Application startup complete.\nINFO: Uvicorn running on http://0.0.0.0:5000 (Press CTRL+C to quit)\nINFO: 127.0.0.1:36454 - "GET / HTTP/1.1" 200 OK\nINFO: 127.0.0.1:36454 - "GET /favicon.ico HTTP/1.1" 404 Not Found\nINFO: 127.0.0.1:36454 - "GET /docs HTTP/1.1" …Run Code Online (Sandbox Code Playgroud) python multilabel-classification fastapi uvicorn simpletransformers
我正在尝试使用scikit学习0.17与anaconda 2.7的多标签分类问题.这是我的代码
import pandas as pd
import pickle
import re
from sklearn.cross_validation import train_test_split
from sklearn.metrics.metrics import classification_report, accuracy_score, confusion_matrix
from nltk.stem import WordNetLemmatizer
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.naive_bayes import MultinomialNB as MNB
from sklearn.pipeline import Pipeline
from sklearn.grid_search import GridSearchCV
traindf = pickle.load(open("train.pkl","rb"))
X, y = traindf['colC'], traindf['colB'].as_matrix()
Xtrain, Xtest, ytrain, ytest = train_test_split(X, y, train_size=0.7)
pip = Pipeline([
('vect', TfidfVectorizer(
analyzer='word',
binary=False,
decode_error='ignore',
dtype=<type 'numpy.int64'>,
encoding=u'utf-8',
input=u'content',
lowercase=True,
max_df=0.25,
max_features=None,
min_df=1,
ngram_range=(1, 1),
norm=u'l2',
preprocessor=None,
smooth_idf=True,
stop_words='english', …Run Code Online (Sandbox Code Playgroud) python machine-learning scikit-learn multilabel-classification
from sklearn.feature_extraction.text import TfidfVectorizer
import numpy as np
from sklearn import linear_model
arr=['dogs cats lions','apple pineapple orange','water fire earth air', 'sodium potassium calcium']
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(arr)
feature_names = vectorizer.get_feature_names()
Y = ['animals', 'fruits', 'elements','chemicals']
T=["eating apple roasted in fire and enjoying fresh air"]
test = vectorizer.transform(T)
clf = linear_model.SGDClassifier(loss='log')
clf.fit(X,Y)
x=clf.predict(test)
#prints: elements
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,clf.predict()仅为列表X中的样本打印1个最佳预测.我对列表X中特定样本的前3个预测感兴趣,我知道函数/ 返回列表Y中每个特征的所有概率的列表,但它必须排序然后与列表Y中的特征相关联才能获得的顶部3的结果.有没有直接有效的方法?predict_probapredict_log_proba