如何经过机器学习之聚类k-means算法找到NBA中的超级巨星?
作者头像
  • 贺晴明
  • 2020-07-08 05:42:54 2

NBA 数据分析:控卫表现评估

我们手头有一份2013年NBA球员的数据集,其中包括球员的基本信息和比赛数据。本文主要关注控卫的表现评估,具体包括控卫的场均得分和助攻失误比。

数据筛选

我们从整体数据集中筛选出控卫的数据,并计算他们的一些关键指标: - 场均得分:控卫每场比赛的平均得分。 - 助攻失误比:控卫的助攻数与失误数的比例。

以下是实现这些指标的代码示例:

```python import pandas as pd import numpy as np import matplotlib.pyplot as plt

假设nba是已经加载好的DataFrame

pointguards = nba[nba['pos'] == 'PG'] pointguards['ppg'] = pointguards['pts'] / pointguards['g'] pointguards = pointguards[pointguards['tov'] != 0] pointguards['atr'] = pointguards['ast'] / pointguards['tov'] ```

数据可视化

接下来,我们绘制控卫的场均得分与助攻失误比的散点图,以便直观地观察这些数据的分布情况。

python plt.scatter(point_guards['ppg'], point_guards['atr'], c='y') plt.title("Point Guards") plt.xlabel('Points Per Game', fontsize=13) plt.ylabel('Assist Turnover Ratio', fontsize=13) plt.show()

聚类分析

为了进一步分析这些数据,我们使用聚类算法对控卫进行分类。具体来说,我们将数据分为五类,并通过迭代更新聚类中心来优化分类效果。

以下是实现聚类分析的步骤:

  1. 随机选择初始聚类中心python num_clusters = 5 random_initial_points = np.random.choice(point_guards.index, size=num_clusters) centroids = point_guards.loc[random_initial_points]

  2. 计算样本点与聚类中心的距离: ```python def calculatedistance(centroid, playervalues): distance = 0 for i in range(len(centroid)): distance += (centroid[i] - player_values[i]) * 2 return distance * 0.5

    q = [5, 2] p = [3, 1] print(calculate_distance(q, p)) ```

  3. 分配样本点到最近的聚类中心: ```python def assigntocluster(row): distances = [] for centroid in centroids.values: distance = calculatedistance(centroid, [row['ppg'], row['atr']]) distances.append(distance) closestcluster = np.argmin(distances) return closest_cluster

    pointguards['cluster'] = pointguards.apply(lambda row: assigntocluster(row), axis=1) ```

  4. 重新计算聚类中心: ```python def recalculatecentroids(df): newcentroids = {} for cluster in range(numclusters): clusterdata = df[df['cluster'] == cluster] newcentroids[cluster] = [ clusterdata['ppg'].mean(), clusterdata['atr'].mean() ] return newcentroids

    centroidsdict = recalculatecentroids(point_guards) ```

  5. 重复上述步骤,直到聚类中心不再变化python visualize_clusters(point_guards, 5)

结论

通过上述步骤,我们可以对控卫的表现进行详细分析,并通过聚类算法得出不同类型的控卫群体。这种分析有助于更好地了解每个控卫的特点和实力,从而为球队提供更有价值的数据支持。

以上便是对2013年NBA球员数据的分析过程,特别是对控卫表现的评估和分类。希望这些信息对你有所帮助!

    本文来源:图灵汇
责任编辑: : 贺晴明
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
习之算法巨星经过机器找到超级如何meansNBA
    下一篇