<jupyter_start><jupyter_text>1. 读入数据<jupyter_code>dataset = pd.read_csv('NBA.csv')
dataset.head()
dataset['三分投球率'] = dataset['三分投球率'].str.rstrip('%').astype('float')/100
dataset['投篮率'] = dataset['投篮率'].str.rstrip('%').astype('float')/100
dataset['罚球率'] = dataset['罚球率'].str.rstrip('%').astype('float')/100
scaler = preprocessing.StandardScaler()
for name in dataset.columns[1:]:
    dataset[name] = scaler.fit_transform(dataset[name].values.reshape((-1, 1)))<jupyter_output><empty_output><jupyter_text>2. 主成分分析<jupyter_code>%matplotlib inline
pca = decomposition.PCA()
pca.fit(dataset.iloc[:,1:-1])
plt.plot(pca.explained_variance_)
plt.title('Scree plot')
plt.xlim((0, 17))
plt.show()<jupyter_output><empty_output><jupyter_text>拐点出现在2，但是不能只保留一个主成分，我们考虑累计方差贡献率。<jupyter_code>np.cumsum(pca.explained_variance_ratio_)<jupyter_output><empty_output><jupyter_text>三个主成分的累计方差贡献率大约是80%。  3. 主成分得分<jupyter_code>pca.set_params(n_components=3)
score = pd.DataFrame(pca.transform(dataset.iloc[:,1:-1])[:,0:3])
score.index = dataset.iloc[:,0]
score.columns = ["得分1", "得分2", "得分3"]
score
plt.plot(np.arange(0,17), pca.components_[0], label='score1')
plt.plot(np.arange(0,17), pca.components_[1], label='score2')
plt.plot(np.arange(0,17), pca.components_[2], label='score3')
plt.legend()
plt.xlim((0, 17))
plt.show()
print(dataset.columns[1:])<jupyter_output><empty_output><jupyter_text>第一个主成分主要不考虑球员的投篮率、三分投球率和罚球率，刻画了球员一般属性的趋势；第二个主成分主要考虑球员的三分投球率、三分命中次数和三分出手次数；第三个主成分主要考虑球员的投篮率、三分投球率和罚球率，这些越低得分越高，而三分命中次数、三分出手次数越高，得分越高。<jupyter_code>score.loc[['沙奎尔-奥尼尔', '詹姆斯-哈登', '姚明', '斯蒂芬-库里']]<jupyter_output><empty_output><jupyter_text>这样的结果我们发现一些规律。首先分析得分2，姚明和奥尼尔都是中锋，他们很少参与三分球的进攻，而库里作为联盟中三分最强的选手，自然在得分二上得分较高。其次是得分3，得分越高，说明这些球员进攻效率越高，哈登和库里进攻效率很高。得分1刻画了均值，姚明的得分比较低，这是因为他不是季后赛常客，没有特别多的出场机会。  4. 聚类分析<jupyter_code>kmeans = cluster.KMeans()
kmeans.fit(score.iloc[:, :3])
score['分类'] = kmeans.predict(score.iloc[:, :3])
print(f'分成{len(kmeans.cluster_centers_)}类')
score<jupyter_output>分成8类
{'fraction_non_alphanumeric': 0.19387755102040816, 'fraction_numerical': 0.02959183673469388, 'mean_word_length': 11.816993464052288, 'pattern_counts': {'":': 0, '<': 24, '<?xml version=': 0, '>': 24, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '6', 'dir': 'jupyter-structured-clean-dedup', 'id': '392167', 'license': 'Unlicense', 'n_tokens_mistral': 1132, 'n_tokens_neox': 1206, 'n_words': 68, 'path': 'homework/Homework 8/report.ipynb', 'repo_name': 'Super-Dainiu/ddddd', 'size': '1960'}