我正在使用scikit学习和处理预测电影评论评分的练习。我读过科恩的kappa(坦率地说,我不完全理解它),它是衡量观察到的准确度和预期的准确度的有用指标。我像往常一样在我的语料库中应用机器学习算法,使用了一包单词模型。我读过Cohen的Kappa是衡量分类器性能的好方法。
如何使用sklearn使此概念适应我的预测问题?
Sklearn的文档并没有明确说明如何使用文档术语矩阵(如果这是正确的方法)来处理这个问题sklearn.metrics.cohen_kappa_score(y1, y2, labels=None, weights=None)
这是sklearn网站上的示例:
from sklearn.metrics import cohen_kappa_score
y_true = [2, 0, 2, 2, 0, 1]
y_pred = [0, 0, 2, 2, 0, 2]
cohen_kappa_score(y_true, y_pred)
Kappa评分计算在这里适用吗?在我的语料库中注释评论的人中?怎么写? 既然所有的影评都来自不同的注释者,那么在评价科恩的《卡帕》时,他们还需要考虑两个注释者吗? 我该怎么办? 下面是我正在尝试的示例:
import pandas as pd
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import cross_val_score
from sklearn.model_selection import KFold
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.model_selection import StratifiedShuffleSplit
xlsx1 = pd.ExcelFile('App-Music/reviews.xlsx')
'''
review are stored in two columns, one for the review, one for the rating
'''
X = pd.read_excel(xlsx1,'Sheet1').Review
Y = pd.read_excel(xlsx1,'Sheet1').Rating
X_train, X_test, Y_train, Y_test = train_test_split(X_documents, Y, stratify=Y)
new_vect= TfidfVectorizer(ngram_range=(1, 2), stop_words='english')
X_train_dtm = new_vect.fit_transform(X_train.values.astype('U'))
X_test_dtm = new_vect.fit_transform(X_test.values.astype('U'))
new_model.fit(X_train_dtm,Y_train)
new_model.score(X_test_dtm,Y_test)
'''
this is the part where I want to calculate cohen kappa score for comparison
'''
我可能完全错了,但我读了这篇关于情绪分析的文章 “归根结底,工具的准确性只是人类判断与工具判断一致的百分比。人类之间这种程度的一致也被称为人类和谐。各种各样的人和公司进行了各种各样的研究,他们得出的结论是,人类和谐的比率在70%到79%之间。” 我希望这是足够的信息。:)
如documentation of ^{} 所述:
此度量中没有
y_pred
,y_true
。你在信中提到的签名是在这种情况下,没有什么比正确的预测值更合适的了。只是两个不同的人贴的标签。因此,由于他们对这个话题的看法和理解,可能会有差异。
您只需要提供两个列表(或数组),其中的标签由不同的注释器注释。命令无关紧要。
编辑1
你说你有文字评论。在这种情况下,需要应用一些特征提取过程来标识标签。
This metric用于找到两个人之间标记数据的一致性。就像给一些数据样本分配一个类。这不能直接用于原始文本。
编辑2: 假设y只包含整数(可能从1到10进行审查),这将成为一个多类分类问题。它由
cohen_kappa_score
的scikit实现支持。如果我正确理解你发布的情感分析链接,那么你应该:
相关问题 更多 >
编程相关推荐