- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经基于这个写了一个代码 site并制作了不同的多标签分类器。
我想根据每类的准确性和每类的 F1 测量来评估我的模型。
问题是我在所有模型中获得的准确度和 f1 测量值都相同。
我怀疑我做错了什么。我想知道在什么情况下可能会发生这种情况。
代码与网站完全相同,我这样计算 f1 测量值:
print('Logistic Test accuracy is {} '.format(accuracy_score(test[category], prediction)))
print 'Logistic f1 measurement is {} '.format(f1_score(test[category], prediction, average='micro'))
更新 1
这是完整的代码,
df = pd.read_csv("finalupdatedothers.csv")
categories = ['ADR','WD','EF','INF','SSI','DI','others']
train,test = train_test_split(df,random_state=42,test_size=0.3,shuffle=True)
X_train = train.sentences
X_test = test.sentences
NB_pipeline = Pipeline([('tfidf', TfidfVectorizer(stop_words=stop_words)),
('clf',OneVsRestClassifier(MultinomialNB(fit_prior=True,class_prior=None))),])
for category in categories:
print 'processing {} '.format(category)
NB_pipeline.fit(X_train,train[category])
prediction = NB_pipeline.predict(X_test)
print 'NB test accuracy is {} '.format(accuracy_score(test[category],prediction))
print 'NB f1 measurement is {} '.format(f1_score(test[category],prediction,average='micro'))
print "\n"
这是输出:
processing ADR
NB test accuracy is 0.821963394343
NB f1 measurement is 0.821963394343
这是我的数据的样子:
,sentences,ADR,WD,EF,INF,SSI,DI,others
0,"extreme weight gain, short-term memory loss, hair loss.",1,0,0,0,0,0,0
1,I am detoxing from Lexapro now.,0,0,0,0,0,0,1
2,I slowly cut my dosage over several months and took vitamin supplements to help.,0,0,0,0,0,0,1
3,I am now 10 days completely off and OMG is it rough.,0,0,0,0,0,0,1
4,"I have flu-like symptoms, dizziness, major mood swings, lots of anxiety, tiredness.",0,1,0,0,0,0,0
5,I have no idea when this will end.,1,0,0,0,0,0,1
为什么我得到的是相同的号码?
谢谢。
最佳答案
这样做:
for category in categories:
...
...
您实质上是将问题从多标签转变为二元问题。如果您想继续此操作,则不需要 OneVsRestClassifier
。您可以直接使用 MultinomialNB
。或者您可以直接使用 OneVsRestClassifier
执行此操作:
# Send all labels at once.
NB_pipeline.fit(X_train,train[categories])
prediction = NB_pipeline.predict(X_test)
print 'NB test accuracy is {} '.format(accuracy_score(test[categories],prediction))
print 'NB f1 measurement is {} '.format(f1_score(test[categories],prediction, average='micro'))
它可能会针对所有训练数据中存在的某些标签发出一些警告,但那是因为您发布的样本数据太小了。
@user2906838,你对分数的看法是正确的。当 average='micro'
时,产生的结果将是相等的。这是 mentioned in documentation here :
Note that for “micro”-averaging in a multiclass setting with all labels included will produce equal precision, recall and F,
那里写的是关于多类的,但我怀疑它也适用于二进制。请参阅用户手动计算所有分数的类似问题:Multi-class Clasification (multiclassification): Micro-Average Accuracy, Precision, Recall and F Score All Equal
关于python - 进行多标签分类时具有相同的准确度和 F1 分数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51815299/
由于我正在为 iPhone 进行开发,所以我刚刚购买了 iPhone 4 来测试我的应用程序,该应用程序需要测量我的位置坐标。我的 iPhone 上没有任何互联网(3GS、GPRS 或其他...),问
我正在尝试构建一个正则表达式,对于“人类导航的浏览器”的User-Agent:计算结果为 true,但对于机器人则为 false。不用说,匹配不会精确,但如果在 90% 的情况下都能正确匹配,那就足够
我将使用 Python 中的 OpenCV 和 pytesseract 的 OCR 从图片中提取文本。我有这样一张图片: 然后我编写了一些代码来从该图片中提取文本,但它没有足够的准确性来正确提取文本。
我正在尝试使用 vars 学习向量自回归模型R 中的包。这个包没有任何方法来衡量返回模型的准确性。 具体来说,我想使用 accuracy 中定义的 MASE来自 forecast 的函数R 中的包,以
我的工作是计划使用UIMA集群运行文档以提取命名实体,而不提取命名实体。据我了解,UIMA打包的NLP组件很少。我已经测试GATE一段时间了,对此相当满意。在普通文本上还可以,但是当我们通过一些代表性
我正在使用 libSVM(带有线性内核)训练和交叉验证(10 倍)数据。 数据由 1800 个 fMRI 强度体素组成,表示为单个数据点。svm-train 的训练集文件中约有 88 个数据点。 训练
我正在运行一个很大的单元测试列表,这些单元测试正在检查各种不同的类获取和设置。我遇到了一些错误,因为我的测试运行太快?!? 举个简单的例子,单元测试从模拟一个带有评论的博客开始; Blog b = n
我正在进行一项实验,其目标是将脑电图时间序列数据分为 3 类。然而,每当我进行训练时,我的损失都是 NaN,准确度是 0.0。 我的数据有 150 步长,有 4 个 channel 。全部归一化在 0
我已经编写了一个检测 IBeacons 的应用程序(swift,IOS)。虽然我可以正确检测到另一部 iPhone 的 RSSI、准确性和接近度,但在检测到我的信标 (Qualcomm) 时,它会被发
我有包含两列的 csv 文件: category, description 文件中有 1030 个类别,只有大约 12,600 行 我需要获得一个文本分类模型,并根据这些数据进行训练。我使用 kera
问题描述 我正在阅读 François Chollet ( publisher webpage , notebooks on github ) 的“Python 中的深度学习”。复制第 6 章中的示例
我对深度学习非常陌生:我正在 Udemy 上学习深度学习类(class)。一旦我执行我的代码,它会说: ValueError:模型未配置为计算准确性。您应该将 metrics=["accuracy"]
我是一名优秀的程序员,十分优秀!