При работе с большими наборами данных часто встречаются столбцы, в которых дисперсия практически отсутствует или практически отсутствует. Их часто называют квазипостоянными столбцами. Эти столбцы предоставляют мало информации и потенциально могут снизить производительность моделей машинного обучения. В этой статье мы рассмотрим различные методы идентификации и удаления квазипостоянных столбцов из кадра данных Pandas.
Метод 1: Порог отклонения
Метод порога отклонения — это простой подход к идентификации и удалению квазипостоянных столбцов. Он вычисляет дисперсию для каждого столбца и удаляет те, у которых дисперсия ниже определенного порога.
import pandas as pd
from sklearn.feature_selection import VarianceThreshold
def remove_quasi_constant(df, threshold):
selector = VarianceThreshold(threshold=threshold)
selector.fit(df)
quasi_constant_mask = selector.get_support()
quasi_constant_columns = df.columns[~quasi_constant_mask]
df.drop(columns=quasi_constant_columns, inplace=True)
# Example usage
df = pd.read_csv('data.csv')
remove_quasi_constant(df, threshold=0.01)
Метод 2: подсчет уникальных значений
Другой подход заключается в подсчете количества уникальных значений в каждом столбце и удалении тех, у которых их мало. Низкое значение указывает на то, что в столбце преобладает одно значение или небольшой набор значений.
def remove_quasi_constant(df, threshold):
quasi_constant_columns = []
total_rows = df.shape[0]
for column in df.columns:
value_counts = df[column].value_counts()
dominant_value_count = value_counts.iloc[0]
dominant_value_ratio = dominant_value_count / total_rows
if dominant_value_ratio >= threshold:
quasi_constant_columns.append(column)
df.drop(columns=quasi_constant_columns, inplace=True)
# Example usage
df = pd.read_csv('data.csv')
remove_quasi_constant(df, threshold=0.95)
Метод 3: Корреляция с целевой переменной
Если у вас есть целевая переменная, вы можете вычислить корреляцию между каждым признаком и целевой переменной. Если столбец имеет низкую корреляцию, вероятно, он содержит мало прогнозной информации и его можно удалить.
def remove_quasi_constant(df, threshold):
target_variable = 'target' # Replace with the actual name of your target variable
quasi_constant_columns = []
for column in df.columns:
correlation = df[column].corr(df[target_variable])
if abs(correlation) < threshold:
quasi_constant_columns.append(column)
df.drop(columns=quasi_constant_columns, inplace=True)
# Example usage
df = pd.read_csv('data.csv')
remove_quasi_constant(df, threshold=0.1)
В этой статье мы рассмотрели три различных метода идентификации и удаления квазипостоянных столбцов в DataFrame Pandas. Метод порога дисперсии, метод подсчета уникальных значений и метод корреляции с целевой переменной предлагают разные подходы для достижения одной и той же цели. В зависимости от вашего набора данных и требований вы можете выбрать наиболее подходящий метод или комбинировать их для достижения лучших результатов. Удалив квазипостоянные столбцы, вы сможете повысить эффективность и производительность задач анализа данных и машинного обучения.