首页 > 其他分享 >FootyForecast走地大小球,滚球让球,预测分析预测逻辑说明

FootyForecast走地大小球,滚球让球,预测分析预测逻辑说明

时间:2024-10-31 12:16:21浏览次数:3  
标签:走地 team1 大小球 滚球 team2 parseInt replace data match

前言

足球发展已经超百余年,但发现市面上没有真正比较好的预测分析软件,本着十几年的JAVA开发经验,想着亲手做一个关于足球走地大小球、让

一、选择稳定的网站足球网站数据采集数据

做此工具,我选择的是球琛网的走地数据,主要采集“即时比分”相关列表数据,及亚欧大相关初盘、终盘、滚球相关赔率。

球、角球的分析软件看看情况是怎么样的。

编辑

软件采集的代码片段如下://从网页取得数据 InputStream in =null; try{ JavaScriptPage jspage = (JavaScriptPage) HtmlunitHelper.getPage(url, requestHead); in=jspage.getWebResponse().getContentAsStream(); jspage.getEnclosingWindow().getWebClient().closeAllWindows(); }catch(Exception e){ HtmlPage jspage = (HtmlPage) HtmlunitHelper.getPage(url, requestHead); in=jspage.getWebResponse().getContentAsStream(); jspage.getEnclosingWindow().getWebClient().closeAllWindows(); } InputStreamReader inr = new InputStreamReader(in, "UTF-8"); BufferedReader br = new BufferedReader(inr); String s = null; //String site="live"; while((s=br.readLine())!=null){ if(pattern.matcher(s).find()){ listStr.add(s); } }for(String s:listStr) { Match match = new Match(); String strData = s.split("\"", s.lastIndexOf("\""))[1]; String[] data = StringUtil.split(strData,"\\^"); try{ match.setJqqc(data[48]+"-"+data[49]); }catch(Exception e){} match.setId(data[0]); match.setGameName(data[2]); match.setGameFirstName(data[2].substring(0,1)); match.setGameNameC(data[3]); match.setTeams1(data[5].replace("<font color=#880000>", "").replace("</font>", "")); match.setTeams1C(data[6].replace("<font color=#880000>", "").replace("</font>", "")); match.setTeams2(data[8].replace("<font color=#880000>", "").replace("</font>", "")); match.setTeams2C(data[9].replace("<font color=#880000>", "").replace("</font>", "")); match.setScore(data[14]+"-"+data[15]); match.setYellowCard1(Integer.parseInt(data[20])); match.setYellowCard2(Integer.parseInt(data[21])); match.setRedCard1(Integer.parseInt(data[18])); String team1=match.getTeams1(); String team2=match.getTeams2(); try{ team1 = (String)engine.eval("T[\""+data[37]+"_3\"][0]"); team2 = (String)engine.eval("T[\""+data[38]+"_3\"][0]"); team1 = team1.replaceAll(" ", ""); team2 = team2.replaceAll(" ", ""); }catch(Exception e){} try{ match.setRedCard2(Integer.parseInt(data[19])); }catch(Exception e){} team1=team1.replace("U19", ""); team1=team1.replace("U20", ""); team1=team1.replace("U21", ""); team1=team1.replace("U22", ""); team1=team1.replace("U23", ""); team1=team1.replace("B队", ""); team1=team1.replace("(中)", ""); team2=team2.replace("U19", ""); team2=team2.replace("U20", ""); team2=team2.replace("U21", ""); team2=team2.replace("U22", ""); team2=team2.replace("U23", ""); team2=team2.replace("B队", ""); team2=team2.replace("(中)", ""); match.setTeamHg1(team1); match.setTeamHg2(team2); match.setHalfCourt(data[16]+"-"+data[17]); if("-".equals(match.getHalfCourt())){ match.setHalfCourt(match.getScore()); } String[] t = data[12].split(","); int statas = Integer.parseInt(data[13]); Date date = new Date(Integer.parseInt(t[0])-1900,Integer.parseInt(t[1]),Integer.parseInt(t[2]),Integer.parseInt(t[3]),Integer.parseInt(t[4]),Integer.parseInt(t[5])); long gotime = (System.currentTimeMillis() - date.getTime())/(1000*60); String strGotime = ""; try{ if(statas==1){ strGotime = gotime+""; if(gotime>45) strGotime = "45+"; }else if(statas==3){ strGotime = gotime+46+""; if(gotime+46>90) strGotime = "90+"; }else{ strGotime = state_ch[statas+14]; } }catch(Exception e){ //e.printStackTrace(); strGotime=""; log.info("007获取状态出错,team1:"+match.getTeams1()+",statas:"+statas+",gotime:"+gotime+",error:"+e.getMessage()); } match.setStatus(strGotime); // if(match.getStatus()==null||"".equals(match.getStatus())||"推迟".equals(match.getStatus())||"待定".equals(match.getStatus())){// if(!"true".equals(wkbsMap.get("wkbs"))){// continue;// }// } /*if("莫斯科斯巴达".equals(team1)||"清水心跳".equals(team1)||"托利马".equals(team1)){ log.info("比赛状态========>>"+strGotime+",team1==>>"+team1); }*/ //log.info("角球比分:"+match.getJqqc()+"==>>"+match.getTeamHg1()+" VS "+match.getTeamHg2()); //String strdataTime = t[0]+"-"+t[1]+"-"+t[2]+" "+data[11];// 2018,3,10,20,15,00 //log.info("data[12].trim()===>>"+data[12].trim()) match.setDataTime(DateUtils.parseDate(data[12].trim(), "yyyy,MM,dd,HH,mm,ss")); Calendar dateTime = Calendar.getInstance();   dateTime.setTime(match.getDataTime());   dateTime.add(Calendar.MONTH, 1); match.setDataTime(dateTime.getTime()); // Date dataTime = new Date(Integer.parseInt(t[0])-1900,Integer.parseInt(t[1]),Integer.parseInt(t[2]),Integer.parseInt(data[11].split(":")[0]),Integer.parseInt(data[11].split(":")[1]),0);// match.setDataTime(dataTime); String runMath="0"; try{ if(data[28].equals("True")){ String[] data1 = ch_goin.get(match.getId()); if(data1!=null){ if(data1[5].equals("2")) runMath ="2"; }else{ runMath ="1"; } }else{ runMath ="0"; } }catch(Exception e){ log.error("获取runMath异常"); } String[] goindata = goin.get(match.getId()); Double exponential = null; Double sbExponentiald = null; String sb = ""; if(goindata!=null){ if(goindata[14].equals("0")){ try { exponential = Double.parseDouble(goindata[3]);     sbExponentiald = Double.parseDouble(goindata[4]);     sb = this.Goal2GoalCn(goindata[2]); }catch(Exception e) { log.error("获取SB异常,"+team1+" VS "+team2+",goindata[3]:"+goindata[3]); } }else{ exponential = null; sbExponentiald = null; sb = "封"; } } match.setRunMath(runMath);

采集还是相对简单,主要是读取球琛的JSON数组,前端

但单是赔率数据是不够的,因此我们还采集了球琛的技术统计数据,如危险进攻数、射门数、射正射门数、传球成功率、控球率、进攻等,后面实现策略逻辑时,需要从这些数据中去查找规律。

二、开发筛选策略平台,动态设置筛选参数逻辑

这一步主要设置自己的动态策略,条件组合,参数调配等,下面简单列举其中一个策略,如:

70分钟前,主队让球,
控球率主队大于客队
危险进攻数主队大于客队12个以上
进攻主队大于客队20个
射门数主队大于客队
射正射门数主队大于客队
让球盘小于2
主队比分大于或等于客队比分
主队进攻大于 50

符合此所有条件后,看好主队获胜。

因此需要开发一些常用的界面,我们的界面如下,在这里就需要有一点点SQL的经验了:

是通过开源的UI展示出来,界面如下:

三、定时任务执行,根据筛选策略生成相关符合策略的明细记录

策略写好后,就来到了这一步,这一步主要是配置系统的定任务,让定任务去执行条件策略的频繁筛选,

四、比赛完成后需要对生成的明细记录进行结算,统计每条策略的胜率情况

这是最后一步,就是对生成的预测条件进行胜率统计,下面展示一下我们的比赛结果结算方法代码及界面效果:

代码:

总结

该软件适合初盘、滚球的大小球、让球、角球的相关分析,非常灵活,这些实践付出了不少,但也收获了很多,从陌生到熟悉,到最后慢慢深入,所以任何领域都需要我们认真学习,想干就干,敢于实践,才会做到你想做的东西。

相关系统演示地址:FootyForecast |滚球大小球|滚球亚让数据分析

标签:走地,team1,大小球,滚球,team2,parseInt,replace,data,match
From: https://blog.csdn.net/footyfo/article/details/143392040

相关文章

  • 足球预测大小球及让球-AI智能大数据算法软件:教你如何准确预测足球赛事
    一、引言在足球领域,预测比赛结果一直是球迷和专业人士关注的焦点。而有些人能在足球预测领域混的风生水起,更多的人则是难以准确分析足球比赛,这种现象的原因在于数据信息的不对等,足球预测归根结底是基于数据信息的推论,普通人没有专业的分析团队,缺乏合适的预测工具,往往就难以准......
  • 人工智能是如何预测足球比赛?大小球亚盘数据分析推荐
    今天的文章主要包含了三部分内容:1,AI预测足球的过程。2,举例说明。3,影响AI预测准确率的原因。AI预测足球比赛的过程,其实并不复杂,主要就是下面几步,大家可以和自己平时预测比赛做个对照,看看我们和机器的区别在哪里:1,评估影响比赛结果的因素AI通过大模型的训练数据和知识库,运用机......
  • 随机森林(Random Forest)实现足球大小球数据分析推荐思路
    前言随机森林(RandomForest)是一种集成学习方法,它通过构建多个决策树并将它们的预测结果进行汇总来提高预测的准确性和稳定性。在足球比赛的大小球预测中,大小球通常指的是一场比赛中进球总数的预测,比如是否超过或低于某个特定的阈值(如2.5球)。下面是如何使用随机森林来实现足球......
  • 足球大小球及亚盘数据分析与机器学习实战详解:从数据清洗到模型优化
    本文将深入探讨Java在数据分析和机器学习中的实际应用,涵盖数据预处理、模型训练和优化等方面的内容。通过详尽的代码示例,帮助读者掌握相关技术并应用于实际项目中。数据分析、初盘数据、走地数据、分析管理系统、AI大模型预测系统、全自动化下单系统、智能娱乐竞猜系统-乐彩云......
  • 深度学习-用神经网络NN实现足球大小球数据分析软件
    文章目录前言一、数据收集1.1特征数据收集代码实例二、数据预处理清洗数据特征工程:三、特征提取四、模型构建五、模型训练与评估总结前言预测足球比赛走地大小球(即比赛过程中进球总数是否超过某个预设值)的深度学习模型是一个复杂但有趣的项目。这里,我将概述一个......
  • 神经网络(RNN)预测走地角球数以及角球玩法计算公式
    文章目录前言一、角球的基本玩法与规则?1.1角球的判罚1.1.1角球的判罚球的整体越过球门线1.1.2最后触球者为守方队员1.2角球执行流程1.2.1犯规行为1.2.2角球执行方式:1.2.3直接得分:1.3角球玩法二、角球计算公式1.示例一【全赢】2.示例二【走水】3.示例三【全输......
  • 【大小球让球实战】——深度剖析足球大小球数据分析软件,找到一个临界点,把准确率提高到
    最近在跟一些圈内朋友聊天,发现每个人都有一套自己的玩球逻辑,比如有些人看亚盘,有些看欧盘,有些玩绝杀,有些看盘口,是否可以自定义的去玩球?结合多年的经验,把分析的过程大概写了一下。数据爬取采集汇聚全球各大足球赛事的即时比赛数据。从进球瞬间到红黄牌警告,每一刻赛场动态......
  • 【足球走地软件】走地数据分析预测【大模型篇】走地预测软件实战分享
    了解什么是走地数据?走地数据分析,在足球赛事的上下文中,是一种针对正在进行中的比赛进行实时数据分析的方法。这种方法主要用于预测比赛中的某些结果或趋势,如总进球数、比分变化、球队表现等。在足球走地数据分析中,大小球策略是一种非常实用的投注方式。它主要预测的是一场......
  • 足球走地大小球、让球、角球预测之理性分析软件开发及逻辑详细说明
    前言足球发展已经超百余年,但发现市面上没有真正比较好的预测分析软件,本着十几年的JAVA开发经验,想着亲手做一个关于足球走地大小球、让球、角球的分析软件看看情况是怎么样的。开发本类工具需要按以下步骤进行,一、选择稳定的网站足球网站数据采集数据做此工具,我选择的是球琛......
  • 【决战欧洲之巅】丹麦 vs 英格兰战术分析和球员状态以及走地数据分析
    丹麦vs英格兰战术分析和球员状态阵型与战术丹麦:阵型:丹麦通常采用4-3-3阵型,以因防守为基础,同时通过快速反击等找机会。”战术:防守:丹麦在防守时以紧密的四后卫体彩为核心,辅以中场球员的积极回防,形成稳因的防线。·进攻:依赖边路突破和快速传递,利用前锋尤素福波尔......