当前位置: 首页 > news >正文

南平网站建设wzjseo百度网站大全旧版

南平网站建设wzjseo,百度网站大全旧版,wordpress如何适配手机,东莞报告1例文章目录 前言一、决策树是什么?二、数据收集与整理1.数据收集2.数据清洗3.特征选择 三、决策树构建3.1绘制训练数据图像3.2 训练决策树模型3.3 依据模型绘制决策树的决策边界3.4 树模型可视化 四、模型预测五、随机森林模型总结 前言 之前搞足球数据分析的时候&…

文章目录

  • 前言
  • 一、决策树是什么?
  • 二、数据收集与整理
    • 1.数据收集
    • 2.数据清洗
    • 3.特征选择
  • 三、决策树构建
    • 3.1绘制训练数据图像
    • 3.2 训练决策树模型
    • 3.3 依据模型绘制决策树的决策边界
    • 3.4 树模型可视化
  • 四、模型预测
  • 五、随机森林模型
  • 总结


前言

之前搞足球数据分析的时候,会通过一些预设条件去筛选比赛,比如当前比分是0-0,射门数>10并且射正数>2,盘口为1,那么筛选出来就是大球,反之则是小球,这种逻辑条件就是跟决策树差不多的算法模式,所以尝试用CART算法(决策树的一种算法),看一下这种去分析大小球胜率都能达到多少,再结合随机森林算法,胜率又能达到多少?这篇文章大概讲叙了决策树的算法实现过程。


一、决策树是什么?

决策树是一种树形模型,也是一种十分常用的分类和回归方法。决策树算法是一种监督学习算法,英文是Decision tree。

决策树思想的来源非常朴素,程序设计中的条件分支结构就是 if-else 结构,最早的决策树就是利用这类结构分割数据的一种分类学习方法。

  • 是一种树形结构,本质是一颗由多个判断节点组成的树
  • 其中每个内部节点表示一个属性上的判断,
  • 每个分支代表一个判断结果的输出,
  • 最后每个叶节点代表一种分类结果。

用最简单的话来说,就是根据你自己的条件,告诉模型正确的结果,比如射门数>10,是大球,反之就是小球,当然不可能这么简单,这里还包含很多特征数据,以及特征的增熵。

射正数>10
大球
小球

二、数据收集与整理

1.数据收集

这里引用第三方网站的数据

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

2.数据清洗

代码如下(示例):

data = pd.read_csv('https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())

在这里插入图片描述

3.特征选择

我们选择以下特征来构建决策树:

  • 主队进球数
  • 客队进球数
  • 比赛时间(简单划分为早期、中期、后期)
  • 射门次数
  • 射正次数

但由于简化示例的限制,我们将只使用“主队进球数 +
客队进球数”这一复合特征,并假设阈值设为2.5球(即总进球数大于等于3为大球,否则为小球)。

三、决策树构建

3.1绘制训练数据图像

import numpy as np
import matplotlib.pyplot as pltfrom sklearn import datasetsiris = datasets.load_iris()
X = iris.data[:,2:]
y = iris.targetplt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])plt.show()

绿色为大球、橙色为走水、蓝色为小球

在这里插入图片描述

3.2 训练决策树模型

from sklearn.tree import DecisionTreeClassifiertree = DecisionTreeClassifier(max_depth=2,criterion="entropy")
tree.fit(X,y)

3.3 依据模型绘制决策树的决策边界

#找到模型的决策边界,并绘制图像(此方法所用到的api不需要掌握,能够调用就行)
def plot_decision_boundary(model,axis):x0,x1 = np.meshgrid(np.linspace(axis[0],axis[1],int((axis[1]-axis[0])*100)).reshape(-1,1),np.linspace(axis[2],axis[3],int((axis[3]-axis[2])*100)).reshape(-1,1))X_new = np.c_[x0.ravel(),x1.ravel()]y_predict = model.predict(X_new)zz = y_predict.reshape(x0.shape)from matplotlib.colors import ListedColormapcustom_map = ListedColormap(["#EF9A9A","#FFF59D","#90CAF9"])plt.contourf(x0,x1,zz,linewidth=5,cmap=custom_map)plot_decision_boundary(tree,axis=[0.5,7.5,0,3])
plt.scatter(X[y==0,0],X[y==0,1])
plt.scatter(X[y==1,0],X[y==1,1])
plt.scatter(X[y==2,0],X[y==2,1])
plt.show()

在这里插入图片描述

3.4 树模型可视化

from sklearn.tree import plot_tree
import matplotlib.pyplot as pltplot_tree(tree,filled=True)
plt.show()

在这里插入图片描述
从上面的可视化图形中看出

  • X[1] <=0.8 作为第一次分割的依据,满足条件的所有样本均为统一类别
  • X[1]>0.8的,依据 X[1]<=0.75 为划分依据
  • 由于设置了树的最大深度为2,第二层的两个叶子节点没有完全区分开

决策树算法:

·是非参数学习算法
·可以解决分类(多分类)问题
·可以解决回归问题:
·落在叶子节点的数据的平均值作为回归的结果

四、模型预测

将实时采集的滚球数据喂到大模型中

# 用LabelEncoder转换器就能把字符串类型的球队名转化为整型
from sklearn.preprocessing import LabelEncoder
encoding = LabelEncoder()
home_team = encoding.fit_transform(dataset["Home Team"].values)
visitor_team = encoding.fit_transform(dataset["Visitor Team"].values)
# 抽取所有比赛的主客场球队的球队名(已转化为数值型)并将其组合(在NumPy中叫作“stacking”,是向量组合的意思)起来,形成一个矩阵
x_team = np.vstack([home_team, visitor_team]).T# 使用OneHotEncoder转换器把这些整数转换为二进制数字
from sklearn.preprocessing import OneHotEncoder
onehot = OneHotEncoder()
x_teams_expanded = onehot.fit_transform(x_team).todense()clf = DecisionTreeClassifier(random_state=14)
scores = cross_val_score(clf, x_teams_expanded, y_true, scoring='accuracy')
print("The accuracy of 'x_teams_expanded' is {0:1f}%".format(np.mean(scores) * 100))

结果如下,大概60%的胜率,说明效果还行。后续用随机森林优化算法
在这里插入图片描述

五、随机森林模型

过程太长,这里直接上部门代码

# 使用GridSearchCV搜索最佳参数
parameter_space = {'max_features': [2, 10, 'auto'],'n_estimators': [10, ],'criterion': ['gini', 'entropy'],'min_samples_leaf':[2, 4, 6],
}
grid = GridSearchCV(clf, parameter_space)
grid.fit(x_specific_team, y_true)
print("The accuracy of specific_team after GridSearchCV is {0:.1f}%".format(grid.best_score_ * 100))
grid.fit(x_all, y_true)
print("The accuracy of x_all after GridSearchCV is {0:.1f}%".format(grid.best_score_ * 100))

在这里插入图片描述
在这里插入图片描述
可以看到,增加了随机森林算法之后,胜率又提高了一点

总结

这里只是简单的写了大概的方法,具体实现还是很复杂的,包括特征数据的选取,以及各种模型算法的调优。还要按照联赛去区分训练数据,因为你不同的联赛数据是不可比的,小联赛进球数可能达到10个以上,但是大联赛,进球数可能才几个,所以我们是根据分了联赛数据和公共数据的训练集,目前这两种算法结合的话,目前跑过最高的联赛应该是可以去到80%左右,效果还可以。当然有些联赛暂时可能也只能去到65%。

最后:推荐一个关于用大模型构建的足球数据分析学习软件

1、AiAutoPrediction-基于泊松大模型足球数据分析软件

2、SoccerPredictor-基于决策树大模型足球数据分析软件

在这里插入图片描述

http://www.dinnco.com/news/43915.html

相关文章:

  • 做网站网页尺寸是多少企业网站是什么
  • 规模以上工业企业的标准是什么seo关键词推广渠道
  • 陕西 网站建设首选公司免费的网络营销方式
  • 做品牌文化的网站百度推广怎么联系
  • 买了域名怎么做网站长沙疫情最新数据消息
  • 昆明优化网站公司化妆品营销推广方案
  • 视觉设计的网站和appseo网站自动推广
  • 建设网站可选择的方案有企业培训课程种类
  • 泉州百度网站快速优化磁力猫最好磁力搜索引擎
  • 济南建设工程信息网站什么是网络营销与直播电商
  • 成都今日头条新闻泉州seo报价
  • 中国建设银行学习网站网站seo优化服务商
  • 摄影设计说明300字广州网站优化服务
  • 兼职网站建设策划书torrentkitty磁力搜索引擎
  • 怎么做网站的搜索栏百度快快速排名
  • 17网站一起做网店普宁池尾注册域名的步骤
  • 青岛昌隆文具网站是哪家公司做的seo怎么做关键词排名
  • cms仿站seo网站优化多少钱
  • 传奇私服网站建设网络seo招聘
  • 班级网站 php优化关键词软件
  • 大学生网站建设实训报告厂房网络推广平台
  • 响应式布局网站模板百度手机极速版
  • 成都企业建站系统模板鞍山seo公司
  • wordpress首页文件打不开北海seo快速排名
  • 查网站开发者宁波seo搜索平台推广专业
  • wordpress 微信 登陆广州seo网站管理
  • 网页打不开用什么浏览器seo关键词排名技巧
  • 一般网站开发完周期个人怎么做互联网推广平台
  • 珠海网站建设哪家权威网络营销策划的具体流程是
  • 陕西网站建设企业优化推广网站淄博