def METHOD_NAME(pair_buffer_df, columns):
    from sklearn.cluster import MeanShift
    # Creating feature vector
    cluster_df = pd.DataFrame()
    power_types = [col[1] for col in columns]
    if 'active' in power_types:
        cluster_df['active'] = pd.Series(
            pair_buffer_df.apply(
                lambda row: (
                    (np.fabs(
                        row['T1 Active']) +
                        np.fabs(
                        row['T2 Active'])) /
                    2),
                axis=1),
            index=pair_buffer_df.index)
    if 'reactive' in power_types:
        cluster_df['reactive'] = pd.Series(
            pair_buffer_df.apply(
                lambda row: (
                    (np.fabs(
                        row['T1 Reactive']) +
                        np.fabs(
                        row['T2 Reactive'])) /
                    2),
                axis=1),
            index=pair_buffer_df.index)
    if 'apparent' in power_types:
        cluster_df['apparent'] = pd.Series(
            pair_buffer_df.apply(
                lambda row: (
                    (np.fabs(
                        row['T1 Apparent']) +
                        np.fabs(
                        row['T2 Apparent'])) /
                    2),
                axis=1),
            index=pair_buffer_df.index)
    X = cluster_df.values.reshape((len(cluster_df.index), len(columns)))
    ms = MeanShift(bin_seeding=True)
    ms.fit(X)
    labels = ms.labels_
    cluster_centers = ms.cluster_centers_
    labels_unique = np.unique(labels)
    return pd.DataFrame(cluster_centers, columns=columns)