28Python库分析科比生涯数据

本文使用Python数据预处理技巧分析科比篮球生涯数据,包括数据清洗、特征工程,运用Scikit-learn建立随机森林模型,寻找最佳参数,探讨logspace和linspace的区别。
摘要由CSDN通过智能技术生成

唐宇迪《python数据分析与机器学习实战》学习笔记
28Python库分析科比生涯数据
基本的一个操作流程,没有多深入

一、数据预处理

先来看一下数据,每个样本有25个属性,包括:
A:action_type(用什么方式投的篮)
B:combined_shot_type(结合什么方式投篮)
C:game_event_id(游戏事件ID)
D:game_id(游戏ID)
E:la(投篮的经度)
F:loc_x (投篮的x坐标)
G:loc_y(投篮的y坐标)
H:lon(投篮的纬度)
I:minutes_remaining(离比赛结束还有多少分钟)
J:period(第几场)
K:playoffs(是不是季后赛)
L:season(赛季)
M:seconds_remaining(离比赛结束还有多少秒)
N:shot_distance(投篮离篮筐的的距离)
O:shot_made_flag (是不是进球了)这里就是label
P:shot_type(2分球还是3分球区域)
Q:shot_zone_area(投篮区域表示方式一)
R:shot_zone_basic(投篮区域的表示方式二)
S:shot_zone_range(投篮区域的表示方式三)
T:team_id(队伍ID)
U:team_name(队伍名字)
V:game_date(比赛时间)
W:matchup(比赛双方队伍)
X:opponent(自己所在队伍名字)
Y:shot_id(镜头ID)
在这里插入图片描述在这里插入图片描述
label为O列:0没进,1进了,还有些缺失值这里需要去除。

导入模块

import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt
%matplotlib inline
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import KFold

导入数据

filename= "data.csv"
raw = pd.read_csv(filename)
print (raw.shape)

(30697, 25)

缺失值处理

kobe =  raw[pd.notnull(raw['shot_made_flag'])]#notnull如果不是空值就保留
print (kobe.shape)

(25697, 25)

特征样本点分布观察

alpha = 0.02
plt.figure(figsize=(10,10))

# loc_x 和 loc_y,投篮位置
plt.subplot(121)
plt.scatter(kobe.loc_x, kobe.loc_y, color='R', alpha=alpha)
plt.title('loc_x and loc_y')

# lat 和 lon,经度纬度
plt.subplot(122)
plt.scatter(kobe.lon, kobe.lat, color='B', alpha=alpha)
plt.title('lat and lon')

在这里插入图片描述
发现两个特征表达的投篮位置都一样,所以接下来可以任意一个。
这里保留前者xy,为了方便表达将其转换为极坐标

raw['dist'] = np.sqrt(raw['loc_x']**2 + raw['loc_y']**2)#距离计算

loc_x_zero = raw['loc_x'] == 0 #角度计算
#print (loc_x_zero)
raw['angle'] = np.array([0]*len(raw))
raw['angle'][~loc_x_zero] = np.arctan(raw['loc_y'][~loc_x_zero] / raw['loc_x'][~loc_x_zero])
raw['angle'][loc_x_zero] = np.pi / 2 

还有多少分钟,多少秒结束,这两列也可以结合在一起:

raw['remaining_time'] = raw['minutes_remaining'] * 60 + raw['seconds_remaining']

快速观察数据:有些特征包含的属性太多,这里可以通过以下操作看一下包括哪些:</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值