我正在进行一个项目,预测体育赛事的结果。为此,我预测单个赛事的赢家和输家,然后根据预测下注。如果考虑所有赛事,我的策略在59%的赛事中能获得正收益。
我想只在预期能赢的赛事上下注。为此,我使用sklearn将赛事分类为预期能盈利和亏损的赛事,然后只在被分类为盈利赛事上进行下注。我的模型准确率为0.60,并且通过以下代码生成和测试:
knn = KNeighborsClassifier(n_neighbors = 6)knn.fit(df_classifier, data_indicator)y = data_indicator.valuesX = df_classifier.valuesX_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3, random_state = 21, stratify = y)knn = KNeighborsClassifier(n_neighbors = 300)knn.fit(X_train, y_train)y_pred = knn.predict(X_test)knn.score(X_test,y_test)
据我所知,准确率是指正确预测的事件数量。因此,如果正确和错误的预测在每个结果(盈利和非盈利赛事)上的分布是均匀的,那么20%的盈利赛事会被错误分类,亏损赛事也是如此。
这是否意味着,如果我只在预测为盈利的赛事上下注,我的准确率会从59%提高到(59+20)% = 79%,从而在我的下注中获得回报?
此外,如果我的推理正确的话,是否有可能看到我赢和输的赛事结果中正确和错误的分布情况。
回答:
我不理解你的逻辑,但这听起来不对。这更像是一个数学问题而不是编程问题。但你可以通过添加以下两行代码来查看正确和错误结果的分布情况:
from sklearn.metrics import confusion_matrixprint(confusion_matrix(y_test, y_pred))
查看更多详情,请访问:https://scikit-learn.org/stable/modules/model_evaluation.html#confusion-matrix希望这对你有帮助。