Анализ основных компонентов (PCA) — это важный алгоритм в наборе инструментов специалиста по обработке и анализу данных. Он используется для уменьшения размерности набора данных при максимально возможном сохранении исходной информации. Это делает его особенно полезным для анализа больших наборов данных со многими переменными, где может быть сложно визуализировать и интерпретировать данные. Мы поймем его использование, работу и реализацию. Мы также обсудим некоторые распространенные ловушки и ограничения PCA и способы их преодоления.
Почему мы используем PCA
Одним из лучших применений PCA является визуализация. Чтобы показать почему, нам нужно увидеть различные представления данных.
import plotly.express as px df = px.data.iris() # iris is a pandas DataFrame fig = px.scatter(df, x="sepal_width", y="sepal_length",color ="species") fig.show()
import plotly.express as px df = px.data.iris() # iris is a pandas DataFrame fig = px.scatter_3d(df, x="sepal_width", y="sepal_length",z='petal_width',color ="species") fig.show()
И, наконец, мы можем представлять и классифицировать данные с помощью 3D-графиков. Однако это жесткий предел визуализации данных, поскольку люди не могут видеть измерения выше четырех, поэтому мы можем использовать анализ основных компонентов, чтобы выбрать лучшие компоненты (1,2,3) для представления данных.
Математическое объяснение PCA
Важно понимать математику, лежащую в основе алгоритма, чтобы понять удобство использования набора данных. К сожалению, эта концепция сложна и не может быть объяснена, используя только письменное слово. Я считаю, что канал StatQuest может достаточно хорошо объяснить эту концепцию в следующем видео.
Реализация PCA с помощью Python
Мы будем использовать библиотеку scikit-learn для проведения компонентного анализа наших 4-мерных данных.
Я буду использовать набор данных для прогнозирования инсульта, который можно найти в Gist-репозитории Айшварии Рамакришнан. Полный блокнот можно найти на моей Github Page и в моем совместном блокноте.
# Loading the dependencies we will be using import pandas as pd import matplotlib.pyplot as plt import plotly.express as px import seaborn as sns # Loading the Dataset into memory url = "https://gist.githubusercontent.com/aishwarya8615/d2107f828d3f904839cbcb7eaa85bd04/raw/cec0340503d82d270821e03254993b6dede60afb/healthcare-dataset-stroke-data.csv" df = pd.read_csv(url,index_col = 0) df
После загрузки набора данных мы выполним некоторую предварительную обработку и EDA, которые можно найти в моей записной книжке, а затем перейдем к анализу основных компонентов.
from sklearn.decomposition import PCA pca = PCA(n_components = 3) # These are the variabls that we will be using for the PCA cols = ["age", "avg_glucose_level","bmi","hypertension", "heart_disease"] pca.fit(df[["age", "avg_glucose_level","bmi","hypertension", "heart_disease"]]) Array = pd.DataFrame(pca.fit_transform(df[["age", "avg_glucose_level","bmi","hypertension", "heart_disease"]]).tolist(),columns = ["PC1","PC2","PC3"]) Array.info() Array["stroke"] = list(df["stroke"]) px.scatter_3d(Array,x = "PC1" , y= "PC2" ,z = "PC3" ,color = "stroke")
Заключение
Анализ основных компонентов (PCA) — это мощный метод анализа данных и машинного обучения, который может помочь нам определить основные закономерности в сложных наборах данных. Освоение PCA может значительно повысить вашу способность извлекать ценную информацию и принимать обоснованные решения на основе сложных данных, что делает его важным навыком для любого специалиста по обработке данных или специалиста по машинному обучению.