如何在Python中根据足球队伍数据分类强队与弱队?

不知道如何表达,就是如何让程序能知道那个是强队,比如英超利物浦,曼城之类的明显的强队,然后伯尔顿什么的之类的是二流三流队。

有没有什么好思路吗?

单手比赛数据上看去对比,是可以分类出强队弱队,但一些老牌强队,就像上面说的比如曼联有时候是很烂的,但他身上是有强队光环的,我们人去看,就算他最近的打的再烂,也是强队,而电脑是没有这种感情色彩的。有可能一断时期成绩很差,程序就会把队伍归为弱队了。

求思路
如何在Python中根据足球队伍数据分类强队与弱队?

73 回复

做分类时历史战绩 buff


要分强队弱队,最直接的就是看积分。给你个简单实用的方法:

import pandas as pd

# 示例数据 - 实际可以从数据库或API获取
data = {
    'team': ['Team A', 'Team B', 'Team C', 'Team D', 'Team E'],
    'points': [85, 42, 78, 35, 90],
    'goals_for': [65, 28, 60, 25, 70],
    'goals_against': [30, 55, 35, 60, 25]
}

df = pd.DataFrame(data)

# 计算净胜球
df['goal_difference'] = df['goals_for'] - df['goals_against']

# 方法1:按积分简单分类
df['strength_simple'] = df['points'].apply(lambda x: '强队' if x >= 60 else '弱队')

# 方法2:综合积分和净胜球(更合理)
def classify_team(row):
    if row['points'] >= 70 and row['goal_difference'] >= 20:
        return '强队'
    elif row['points'] >= 50 and row['goal_difference'] >= 0:
        return '中游'
    else:
        return '弱队'

df['strength_detailed'] = df.apply(classify_team, axis=1)

print(df[['team', 'points', 'goal_difference', 'strength_simple', 'strength_detailed']])

如果想更专业,可以用K-means聚类自动分组:

from sklearn.cluster import KMeans
import numpy as np

# 选择特征
features = df[['points', 'goal_difference']].values

# 使用K-means分成3组(强/中/弱)
kmeans = KMeans(n_clusters=3, random_state=42, n_init=10)
df['cluster'] = kmeans.fit_predict(features)

# 找出哪个cluster是强队(积分最高的cluster)
cluster_points = df.groupby('cluster')['points'].mean()
strong_cluster = cluster_points.idxmax()

df['strength_cluster'] = df['cluster'].apply(
    lambda x: '强队' if x == strong_cluster else ('中游' if x == 1 else '弱队')
)

print(df[['team', 'points', 'goal_difference', 'strength_cluster']])

核心就是:积分是硬道理,净胜球作参考,聚类能自动分档。

简单说就是按积分划条线,或者用聚类自动分。

基本面:球队阵容身价总和,历史排名
走势:最近 20 场比赛走势,当然对手也有关系;
根据基本面分级,根据走势加权;

别抬举我抬了 doge.jpg

用爬虫,爬贴吧关注用户数

菠菜公司已经帮你分析好了 看赔率

这些我都试过,我爬了大概十多年的数据。我最后发现一个问题,就是只用历史数据的话,是不太可行的,因为历史数据,并不能反就一个球队的光环。所以我现在很困惑,要用什么办法来弄。

欧足联俱乐部排名啊 直接爬数据

那个太虚了,就像国际足联排名一样,毫无意义。懂足球的都知道,四 A 级比赛很多是友谊赛,根本不是正常阵容出场。

我是想弄机器学习的,但这个工程有点大,而且这只是一个方法,我主要现在不知道思路,如果有方向我会去学习的。

我建议你不要局限于胜负的数据,而是应该去看俱乐部给球员开的工资。

说,你是不是鸟黑。
还有一种思路就是比较球队身价,靠谱率怎么也比历史对战高吧。

近期的比赛成绩给一个比较高的权重。拍脑子可以试试用 e 的曲线增加一个系数。

我魔好惨,心疼。

如果你用一个一维向量来衡量队伍的属性的话,肯定得不到好结果的啦。。。

身价,与工资总额我也有计入在内的。

感受到了,只是不知道要如何补充知识,只是一个业余爱好项目,但想能过这个自己想做的事,进一步学习,求指路

我感觉把球迷的拥趸数量,建队历史,球场容纳量可以作为参考。

我觉得,你是不是明确一下需求?强弱队本来也只是一个模糊的概念,正常就是大概判断一下就行了。历史强队还是现在战绩,这个权重可以根据需求改。但是,想要精确得知队伍强弱,这本来就不符合足球的规律。排名至少菠菜给的赔率还是相当准的,只是分个档次也就行了。

高中学的方差和标准差的例子,不就是拿了类似这个举例的么。

直接用两两之间的比赛结果计算分数即可

看这个 https://en.wikipedia.org/wiki/Elo_rating_system

每个队员的:
1、年龄
2、身高
3、耐力
4、适合位置
5、实际位置
6、受伤记录
7、最近体重
8、最近婚姻状况
9、饮食习惯
10、作息习惯
11、最近情绪

参考 fm 啊,把球员数据录入进去作为参考,同时针对球队风格和硬实力做算法,这样比较准。。

做这个东西的目的就是用来比对波菜公司给出的盘口的,看球又玩球的都明白波菜公司是经常骗人的。我本来是想通过一些数据计算出对阵双方的实力是否符合这个盘口。但现在看来真的很难。波菜公司给出的数据,不可全信啊

这个好,谢谢大佬,这个应该可以做为比较高的权重

大佬,这种数据不好抓啊,实时更新球员个人数据的网站我还真没找到。

你觉得随便搞个玩具算法就能对抗任何一个有上千人整日研究这个,有上亿资金流的菠菜公司?

11 楼的方法可以啊…或者直接 SVM…或者聚类

赛季不同阶段积分、对证同赛事不同梯队的球队战绩、球队主客场进失球数、球队总身价、球队阵容整齐情况下不同阵型的输赢场次,很多啊

我也做过足球数据分析,手上的数据是 11 年到现在的,大约 30 多万场比赛,光靠历史数据分析比赛胜负准确度很低,影响的因素太多,比如赛程、伤病、教练战术、队伍近期状态、裁判、晋级关系、主客场、球场环境,比如玻利维亚高原比赛,你一顿数据分析猛如虎,不如直接看比赛场地,来这里的球队几乎就很少赢
所以要么直接从概率学上来分析,否则很难判断,还有些比赛用历史数据也无法支撑,特别是跨联赛的,比如欧冠联赛开始了,一个新的队伍进入欧冠,你能拿到的它的历史数据都是它本国联赛的,用来对比分析毫无意义

其实我只是要分出强弱队,关于比赛的胜负,我对赔率有另一种算法,但不能公开,准确度的话,稳定在 6-7 层

分强弱你的数据远不如种菜的,直接看赔率就行了,如果是公司运营的话不如招一两个经常看比赛的人,毕竟每天开出来的比赛场数有限

让国足去遍历他们,拿到比分直接出排名

像莱斯特城夺冠那年你怎么半 有算法能模拟出来结果?比赛成绩这东西很难说的 皇马还输给过西乙的球队呢 这种小概率事件对算法影响很大

精算师或者。。菠菜公司

哥们,这是想通过程序暴富呀- - 光看双方战绩是不可能的,需要考虑这个球队最近是否有别的比赛,还有一些政治或者别的原因。

我目前只需要分强弱队的功能,对赔率有另一套算法。但是首先真的要分出强弱队,要不然赔率就毫无意义,我只是想通过程序,简化一下我本来要做事,我发现最关键的是要分出强弱。

你只需要爬菠菜的让球就行了吧
总不能弱队让球吧

英超无弱旅。。。

我本质上是要分析,盘口的合理性

强弱队分类直接看每个赛季的排名就可以。
单场分析前提长期看比赛,对首发替补都清楚,好比最近一场的巴萨对皇马。

其实思路没有问题,Target 换一个即可。
举个例子,有些队伍可能本身大众认为实力强劲,碾压大部分队伍没问题,但总输给一些奇怪的队伍爆冷,如何让对于队伍的预测标签,能够表达队伍的这个特征。

控球率,射门次数,传球成功率等指标来代替每场比赛的胜负关系来区分强弱可能会更准一点。再不行就拿 fifa 里的球员数值来计算

盘口的赔率,也是菠菜公司分析后得出数据,虽然有一定参考价值,但是也会有很大的误导性,因为球队的实力强弱,不会直接在赔率上告诉你的,他们会给自己预留出涨和降的空间。 强队和弱队,你看一场结束的比赛数据,就大概清楚了,进攻数据(射门,射正,传球率,传球数等等),防守数据(拦截数,拦截率,头球成功率,头球数等等)

WHR 算法对队伍进行分级。

比赛数据和球队强弱没有必然联系

你是想干什么?赌球?

可以去看个战胜香港马会的真事,有人使用 100 多个维度和参数来预测跑马结果,并且每个参数都有不同的权重,不断失败,不断调试,然后真的做到,并且没兑现那张高奖金彩票

成绩烂就成绩烂,数据是真实的,程序能真实的反应这一事实,从而得出更客观的评估。
然而你反而要求「而电脑是没有这种感情色彩的」?

足球我不知道。。篮球基本上看进攻效率和防守效率就行了

我觉得你不可能在这里问到答案,不然这里都是百万富翁了。(买足彩)

看是干什么用。若是简单 ranking,其实可以套很多模型的。
比如我们可以把球队看过整体,那么球队之间的关系就是一个网络。那么很多网络之间的模型就能用了。
比如跑个 page ranking。
随便可以找个十篇论文都套一下试试看就是。反正数据集规模目测很小

试试各种聚类算法 (典型的 k -means )自己给球队的数据加权,之后就可以用算法把球队按照强弱分类了

玩一下 FM, 总结一套模型出来😂

#48 没错,按照数据来看他抬根本就算不上强队了

球员的综合能力值相加

联赛近五年排名,欧洲联赛名词,冠军奖杯数量,主力球员身价

菠菜公司天天分析这个,直接抓赔率即可。

推荐一本书,《魔球》,讲的是早几年美国一支穷 b 棒球队如何利用数据挑选球手,最红获得成功的故事。
我也是从别人哪里听来的,打算有空看看。

爬虫,爬博彩公司数据,人家的分析点比你多多了,包括每个球员的近况等等都会算进去……

加单点的,可以直接从往绩排名,球队价值,人气值和赔率入手

赛事分级别,可以按照欧洲联赛排名来调整权重,添加洲际赛事,同理。参照欧洲金靴奖的评选方式,可以细化系数
不能单纯看战绩,小联赛的全胜含金量太低。


看到你问题的最后一句,其实根本没必要靠机器来分析啊,按照你说的东西,国际足坛强队轻松就数出来了。从定义上来说,强队就是战绩强,你想区分的是底蕴吧,那可以再加上 google 结果数量、社交媒体粉丝数参考

lz 的问题具体操作不好说,只看想要从球队过往成绩推导出基于”情感“的强弱标签这一点,这个明显矛盾啊,再 NB 的算法也不能无中生有,如果是想知道人们心中的球队排名 /强弱,这数据来源应该是社交网站了

微软的 TrueSkill 算法

楼上的方法更切合实际
看盘是最简单的方法 人家精算师加专业球队教练看人肯定比你准.

value bet ?

你在玩 FM2019 ?

根据球员的身价,综合能力,球队积分,历年成绩

感觉足球这种东西不是太能预测的。菠菜公司的赔率相对来说还是很准的,但是足球又有很强的偶然性,球员比赛时的状态时很重要的,而这种几乎无法根据之前的数据来预测

哈哈 思路清奇

我认为懂足球战术和俱乐部运作才是根本,要对球场上的两队的每一个球员情况有足够多的了解,然后进行滚球下注

#48 他的意思是,总有些未能纳入到数据中,但又确实在起作用的因素。

回到顶部