#python #scikit-learn
#python #scikit-learn
Вопрос:
Спасибо, что прочитали мой вопрос — я был бы очень признателен за любой вклад!
В настоящее время я работаю над проблемой LDA в Python — я немного новичок в ML, так что это может быть одной из причин, почему я столкнулся с этой проблемой. Несмотря на это, вот оно:
У меня проблема с классификацией, для краткости мы будем называть это T и не-T. У меня есть фрейм данных с именем PODall, который содержит мои данные и их метки (0 (не-T) против 1 (T)).
Я использовал модуль sklearn LDA для выполнения этого анализа. Я могу получить точность классификации и т. Д., Просто не могу фактически отобразить мои данные для визуализации.
Я позаимствовал код из https://sebastianraschka.com/Articles/2014_python_lda.html#principal-component-analysis-vs-linear-discriminant-analysis , чтобы иметь возможность визуализировать мои данные, а именно функцию построения графика:
X_lda_sklearn = sklearn_lda.fit_transform(X, y)
def plot_scikit_lda(X, title):
ax = plt.subplot(111)
for label,marker,color in zip(
range(1,4),('^', 's', 'o'),('blue', 'red', 'green')):
plt.scatter(x=X[:,0][y == label],
y=X[:,1][y == label] * -1, # flip the figure
marker=marker,
color=color,
alpha=0.5,
label=label_dict[label])
plt.xlabel('LD1')
plt.ylabel('LD2')
leg = plt.legend(loc='upper right', fancybox=True)
leg.get_frame().set_alpha(0.5)
plt.title(title)
# hide axis ticks
plt.tick_params(axis="both", which="both", bottom="off", top="off",
labelbottom="on", left="off", right="off", labelleft="on")
# remove axis spines
ax.spines["top"].set_visible(False)
ax.spines["right"].set_visible(False)
ax.spines["bottom"].set_visible(False)
ax.spines["left"].set_visible(False)
plt.grid()
plt.tight_layout
plt.show()
plot_step_lda()
plot_scikit_lda(X_lda_sklearn, title='Default LDA via scikit-learn')
Когда я запускаю это, я получаю сообщение об ошибке, что X является одномерным массивом, и, следовательно, X[:,1] ошибки.
Если я добавлю еще один класс, т. Е. «pre-T», «T» и «post-T», я смогу построить эту визуализацию.
Если мне нужно прояснить мою проблему, пожалуйста, дайте мне знать!!
Спасибо!
~ CJ
Комментарии:
1. Что вы получите, если напечатаете X, прежде чем передавать его в функцию?
2. До этого фрагмента кода sklearn_lda = LDA() X_lda_sklearn = sklearn_lda.fit_transform(X,y) X имеет размеры (2506,56). Итак, я подгоняю X и y к модели, и то, что возвращается, является одномерным массивом, следовательно, откуда берется моя ошибка в графике.
3. Но LDA() должен возвращать массив numpy, подобный этому (n_samples, n_features). Почему вы получаете одномерный массив?
4. Вот где я в замешательстве.