import numpy as np from matplotlib import pyplot as plt import pandas as pd from sklearn.decomposition import PCA # Загрузка датасета MLB mlb_data = pd.read_csv('SOCR_Data_MLB_HeightsWeights.txt', sep='\t') mlb_data.columns = ['Name', 'Team', 'Position', 'Height', 'Weight', 'Age'] # Создаем DataFrame аналогично ирисам mlb_pd = pd.DataFrame(data=np.c_[mlb_data[['Height', 'Weight', 'Age']]], columns=['Height (inches)', 'Weight (pounds)', 'Age (years)']) # Выбираем данные для PCA data = mlb_pd[['Height (inches)', 'Weight (pounds)', 'Age (years)']].to_numpy() # Применяем PCA pca = PCA(n_components=2) pca.fit(data) principalComponents = pca.fit_transform(data) # вывод объясненной дисперсии print("Объясненная дисперсия каждой компоненты:", pca.explained_variance_ratio_) print("Суммарная объясненная дисперсия:", sum(pca.explained_variance_ratio_)) pc_df = pd.DataFrame(data=principalComponents, columns=['PC1', 'PC2']) plt.scatter(pc_df['PC1'], pc_df['PC2']) plt.xlabel('PC1') plt.ylabel('PC2') plt.title("Projection on First Two Principal Components - MLB Data") plt.show()