gpt4 book ai didi

python - 当条件在 Python 中成立时,从列表中删除元素并从 numpy 数组中删除行

转载 作者:太空宇宙 更新时间:2023-11-04 04:28:38 25 4
gpt4 key购买 nike

我正在编写一个算法,以便将我的数据集中的推文分类为正面/负面,我想测试它的准确性。为了做到这一点并找到最佳解决方案,我想要一个基线(使用经典的 ML 算法)。在对推文进行预处理后,受到相关工作的启发,我首先使用词袋模型进行了探索,并成功运行了代码并计算了准确率和 Fscore。经过一些文本预处理并将数据集拆分为训练集和测试集:

from sklearn.cross_validation import train_test_split
X_train, X_test1, y_train, y_test1 = train_test_split(X, y, test_size = 0.11, random_state = 0)

我希望能够从测试集中消除所有标记为负面的推文(仅保留正面的推文)并计算算法的精度、召回率和 Fscore(之后对标记为负面的推文执行相同的操作作为积极的)。我试过这样做:

finRow = len(X_test1) 
finCol = len(X_test1[0])

for o in range(0, finrow):
if y_test1[o]== 1:
del y_test1[o]
X_test1 = np.delete(X_test1, o, axis=0)

但是我得到这个错误:

Traceback (most recent call last):

File "<ipython-input-4-5ed18876a8b5>", line 2, in <module>
if y_test1[o]== 1:

IndexError: list index out of range

X_test1 包含推文,大小为 1102 x 564,y_test1 包含 0 和 1(推文为正或负),大小为 1102。当 y_test1 的长度从 1102 减少到 774 时,第 774 次迭代出现错误。

现在,我也尝试这样做:

a = 1
for o in range(0, finrow):
if (y_test1[o] == 1 and o <= finrow - a):
del y_test1[o]
a = a + 1
X_test1 = np.delete(X_test1, o, axis=0)

但我仍然遇到同样的错误,我不知道这是否是删除矩阵行和列表元素的最佳方法,因为当我检查 y_test1 我仍然有一些(一些,不是全部 - 像开始时那样)应该被删除的元素。

我是新手,我不知道我的错误在哪里。

最佳答案

您可能想看看 scikit-learn 中的函数 classification_report

http://scikit-learn.org/stable/modules/generated/sklearn.metrics.classification_report.html

这是计算每个类的 Precision/Recall 和 F1 的最简单方法。

您只需要传递两个数组,第一个是真实预测,第二个是分类器的预测,例如:

predictions = your_clf.predict(X_test1)
classification_report(y_test1, prediction)

关于python - 当条件在 Python 中成立时,从列表中删除元素并从 numpy 数组中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53073598/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com