基于大数据的NBA球员数据分析及预测系统
创作时间:
作者:
@小白创作中心
基于大数据的NBA球员数据分析及预测系统
引用
CSDN
1.
https://blog.csdn.net/qq_80213251/article/details/146383167
NBA球员数据分析及预测系统是一个基于Python语言和Flask框架构建的综合性平台,旨在帮助篮球爱好者、教练和球队管理者深入分析和预测NBA球员的表现。该系统结合了requests爬虫、statsmodels中的ARIMA时间序列预测算法以及Echarts可视化技术,为用户提供了丰富的数据分析和预测功能。
项目界面
球员数据分析1:每个赛季参加场数与平均得分分布情况
球员数据分析2:每个赛季场均篮板、助攻、抢断和盖帽的得分分布情况
球员数据分析3:每个赛季三分、罚球、进攻、防守的分布情况
首页:注册登录
NBA球员未来得分表现预测:时间序列预测算法
NBA球星相似匹配预测
核心代码
以下是系统中关键的数据处理和预测代码:
数据加载和预处理
import json
import sqlite3
import time
import numpy as np
import pandas as pd
from flask import Flask, render_template, jsonify, request
from statsmodels.tsa.arima.model import ARIMA
app = Flask(__name__)
app.debug = True
login_name = None
all_players = []
with open('nab_player.json', 'r', encoding='utf8') as f:
for line in f:
player = json.loads(line.strip())
info = {
'姓名': player['playerProfile']['displayName'],
'赛季': player['season'],
"排名": player['rank'],
"球队": player['teamProfile']['name'],
"场数": player['statAverage']['games'],
"先发": player['statAverage']['gamesStarted'],
"场均得分": player['statAverage']['pointsPg'],
"场均篮板": player['statAverage']['rebsPg'],
"场均助攻": player['statAverage']['assistsPg'],
"分钟": player['statAverage']['minsPg'],
"效率": player['statAverage']['fgpct'],
"三分": player['statAverage']['tppct'],
"罚球": player['statAverage']['ftpct'],
"进攻": player['statAverage']['offRebsPg'],
"防守": player['statAverage']['defRebsPg'],
"场均抢断": player['statAverage']['stealsPg'],
"场均盖帽": player['statAverage']['blocksPg'],
"失误": player['statAverage']['turnoversPg'],
"犯规": player['statAverage']['foulsPg']
}
all_players.append(info)
all_players = pd.DataFrame(all_players)
all_players = all_players.sort_values(by='赛季', ascending=False)
ARIMA模型预测
def arima_model_train_eval(history):
# 构造 ARIMA 模型
model = ARIMA(history, order=(1, 1, 0))
# 基于历史数据训练
model_fit = model.fit()
# 预测下一个时间步的值
output = model_fit.forecast()
yhat = output[0]
return yhat
@app.route('/future_predict/<player>')
def future_predict(player):
time.sleep(1)
df = all_players[all_players['姓名'] == player]
saijis = df['赛季'].values.tolist()
saijis.append(saijis[-1] + 1)
try:
scores = df['场均得分'].values.tolist()
predict_score = arima_model_train_eval(scores)
scores.append(predict_score)
lanbans = df['场均篮板'].values.tolist()
predict_lanban = arima_model_train_eval(lanbans)
lanbans.append(predict_lanban)
zhugongs = df['场均助攻'].values.tolist()
predict_zhugong = arima_model_train_eval(zhugongs)
zhugongs.append(predict_zhugong)
jiangduans = df['场均抢断'].values.tolist()
predict_jiangduan = arima_model_train_eval(jiangduans)
jiangduans.append(predict_jiangduan)
except Exception:
return jsonify({'success': False, 'message': f'该球员赛季数据过少({len(saijis)}),无法构建时序模型进行预测。'})
return jsonify({
'success': True,
'赛季': saijis,
'场均得分': scores,
'场均篮板': lanbans,
'场均助攻': zhugongs,
'场均抢断': jiangduans,
})
欧氏距离计算
def cal_euclidean_distance(x, y):
dist = np.sqrt(np.sum(np.square(x - y)))
return dist
@app.route('/predict_similar_players')
def predict_similar_players():
columns = ['场均得分', '场均篮板', '场均助攻', '罚球', '效率', '三分', '罚球', '进攻', '防守', '场均抢断', '场均盖帽', '失误', '犯规']
test_player_feature = []
for c in columns:
v = request.args.get(c)
test_player_feature.append(float(v))
player_distance = {}
test_player_feature = np.array(test_player_feature)
for player in player_group:
player_df = player_group[player][columns]
player_feature = player_df.mean(axis=0).values
dist = cal_euclidean_distance(test_player_feature, player_feature)
player_distance[player] = dist
player_distance = sorted(player_distance.items(), key=lambda x: x[1])
similar_players = []
for player_dist in player_distance:
player, dist = player_dist
row = [player]
feat = player_group[player][columns].values.tolist()[0]
row.extend(feat)
row.append(dist)
similar_players.append(row)
return jsonify(similar_players[:10])
总结
NBA球员数据分析及预测系统是一个功能强大、易于使用的综合性平台。它不仅能够帮助用户深入了解NBA球员的表现和潜力,还能提供准确的预测和个性化的推荐。无论是篮球爱好者还是球队管理者,都能在这个系统中找到有价值的信息和支持。
热门推荐
沈志坤解读合伙人合同法律要点
含氟牙膏的好处和坏处
胃肠镜在体检中的重要性
腹泻急救小秘方
流动性储备在金融市场中有什么作用?这种作用有什么管理策略?
澳大利亚留学|新南威尔士大学(UNSW)2025申请攻略!含专业及录取要求
维A酸乳膏可以治疗毛囊炎吗
五行都代表了什么方位
什么是购物凭证?从定义到法律规定全方位解析
什么是购物凭证?一文详解其定义、法律效力与管理建议
普通食物抗炎有妙招,营养搭配量有讲究
林则徐与虎门销烟:纪念邮票铭记的历史壮举与民族精神
总得荨麻疹是因为免疫力差?
洗手的6大误区,小心“越洗越脏”!
古希腊神话之光:阿佛洛狄忒——爱之女神的绮丽篇章
青报读书周刊 | 每一位女性都是一个阿佛洛狄忒
中国古代神话必读六本书
怎么合理选择金属件清洗剂及正确使用方法
如何利用区块链技术提升金融行业的效率?
区块链技术如何增强交易的透明度与安全
船舶广播系统:航行中的信息枢纽和安全保障
李贺的浪漫主义
脐带血干细胞到底要不要留?
《谏太宗十思疏》原文及译文翻译
Excel中比对BOM差异的多种方法
大数据思维的特征
《骆驼祥子》:个人命运与社会环境关系的经典之作
迷你世界MOD工作原理和MOD工具介绍
真实信息披露的融资租赁合同条款研究
未来五年职场趋势:你具备最需要的技能吗?