Gui*_*Kaz 8 python statistics machine-learning scikit-learn
我正在使用 scikit 学习并解决预测电影评论评级的练习。我已经阅读了 Cohen 的 kappa(坦率地说,我并没有完全理解它),它作为比较观察到的和预期的准确性的度量很有用。我像往常一样继续在我的语料库上应用机器学习算法,使用词袋模型。我读过 Cohen's 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)
Run Code Online (Sandbox Code Playgroud)
Kappa 评分计算是否适用于此处?在我的语料库中注释评论的人中?怎么写?既然所有的影评都来自不同的注释者,那么在评估 Cohen 的 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
'''
Run Code Online (Sandbox Code Playgroud)
我可能完全错误的想法,但我读到这个关于情感分析的页面“最终,工具的准确性只是人类判断与工具判断一致的次数的百分比。人类之间的这种一致性程度也称为人类一致性。各种人和公司进行了各种研究,他们得出的结论是,人类的一致性率在 70% 到 79% 之间。” 我希望这是足够的信息。:)
Viv*_*mar 10
kappa 统计量是对称的,因此交换 y1 和 y2 不会改变值。
在这个指标中没有y_pred, y_true。您在帖子中提到的签名是
sklearn.metrics.cohen_kappa_score(y1, y2, labels=None, weights=None)
Run Code Online (Sandbox Code Playgroud)
在这种情况下,没有像正确和预测值这样的东西。它只是两个不同人的标签。所以可能会因为他们对主题的看法和理解而有所不同。
您只需要提供两个列表(或数组),其中的标签由不同的注释者注释。顺序无关紧要。
编辑 1
你说你有文字评论。在这种情况下,您需要应用一些特征提取过程来识别标签。
该指标用于查找标记数据的两个人之间的一致性。就像为一些数据样本分配一个类。这不能直接用于原始文本。
编辑 2:假设您的 y 仅包含整数(可能是从 1 到 10 的评论),这将成为一个多类分类问题。它由cohen_kappa_score.
如果我正确理解您发布的情绪分析链接,那么您应该这样做:
Y_pred = new_model.predict(X_test_dtm)
cohen_score = cohen_kappa_score(Y_test, Y_pred)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13477 次 |
| 最近记录: |