Как я могу построить независимые компоненты и вычислить, какая точка принадлежит им? - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь найти независимые компоненты моего набора данных, построить их, а затем создать 2 вспомогательных участка с точками для каждого компонента.

Я работаю с scikit-learn и создалнабор данных.Затем я использовал FastICA () и получил матрицу микширования с моими компонентами.Но сейчас я не знаю, как продолжить.Я думал, что, возможно, я мог бы решить это с помощью линейной регрессии, но мне нужно 2 строки.Поэтому я подумал о том, чтобы выбрать максимальную и минимальную точки моих компонентов и установить линии между ними, но также и не знал!Если бы я мог найти эти линии, я мог бы вычислить евклидово расстояние до каждой точки, поэтому я бы знал, какая точка принадлежит какому-либо компоненту.Но когда я пытаюсь построить их, они выглядят просто неправильно.

# example data set
n_samples = 1000

# random n-class classification problem
X, Y = make_classification(n_samples=n_samples, n_features=2, n_redundant=0, n_informative=2,
                             n_clusters_per_class=1, n_classes=2, random_state=42)

fig = plt.figure(figsize=(7,7))

plt.scatter(X[:, 0], X[:, 1], c = 'red', s=30, edgecolor='k')

plt.title("Synthetic Data Set")
plt.show()

ica = FastICA(random_state=3)

X_ica = ica.fit_transform(X) # Reconstruct signals
X_ica /= X_ica.std() # Compute the standard deviation

A = ica.mixing_
print(A)
plt.figure(figsize=(7,7))

def plot_samples(X, axis):
    plt.scatter(X[:, 0], X[:, 1], c = 'orange', s=30, edgecolor='k')
    axis /= axis.std()
    x_axis, y_axis = axis
    # Trick to get legend to work
    plt.plot(linewidth=2, color='red')
    plt.quiver(2, 0, x_axis, y_axis, zorder=11, width=0.01, scale=5, color='red')

    plt.xlim(-4, 4)
    plt.ylim(-4, 4)
    plt.xlabel('x')
    plt.ylabel('y')


plot_samples(X / np.std(X), A / A.std())
plt.plot()
plt.title('Observations with ICA')

plt.show()

Я ожидаю, что независимые компоненты действительно пройдут самые большие и вторые по величине отклонения, но как вы можете видеть, если выСюжет, они искажены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...