基于大数据的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球员的表现和潜力,还能提供准确的预测和个性化的推荐。无论是篮球爱好者还是球队管理者,都能在这个系统中找到有价值的信息和支持。
热门推荐
12309热线开通,四大功能服务群众监督司法
统一举报号码12309上线,四大检察服务功能全覆盖
经常后背疼应该做什么检查
燕麦麸吃了对身体有好处吗
南宁马山周鹿镇:丘陵水乡孕育壮族文化,交通便利助推旅游发展
感应灯感应探头坏了怎么办?
广西周鹿镇:丘陵环绕、河流纵横,打造生态旅游新名片
从复合到纯钛:市面上主流钛锅类型大对比
复合、有钛、钛合金还是纯钛?一文读懂钛锅选购
伊能静:从歌手到导演的多栖发展之路
健康科技2024年医疗和健康领域的科技创新与应用
扁桃体手术要多少钱?这些因素会影响最终费用
扁桃体手术学平险可以报多少?全面解析保障范围与购买建议
孩子扁桃体和腺样体肥大,用不用切除?听听医生怎么说
日语眼镜用语大全:种类、材质到比喻用法
一文掌握日语“眼镜”:从日常表达到比喻用法
《甄嬛传:用服饰与诗词讲述的宫廷传奇》
渝湘高铁明年投用,巴南高铁启动联调联试,西南交通将迎大提速
五一游武汉长沙:六条主题线路带你看遍两城
牙狼GARO:魔戒骑士的游戏角色揭秘
桂林秋色:古镇风韵与桂花飘香
金融市场交易策略:左侧预判 vs 右侧跟随
左侧交易与右侧交易:如何选择适合自己的投资策略
逆势与顺势:解码股票交易中的两大经典策略
震荡市宜左侧交易,趋势市宜右侧交易
抄底还是追涨?详解金融投资的左侧与右侧交易
从少女到太后:《甄嬛传》70套造型背后的精良制作
主创重聚澳门,《甄嬛传》13年热度不减
《甄嬛传》再现清宫文化,艺术创作引发家族举报风波
甄嬛传成功之道:导演揭秘演员训练与团队协作