#python #spyder #k-means
Вопрос:
Я исправил код для первой части, но теперь у PCA возникли проблемы с массивом, так что все, пока #%% не станет хорошим.. Ошибка значения: Ожидаемый 2D массив, вместо этого получен 1D массив: массив=[1.67240605 1.60913446 1.68764392 … 3.58612338 4.80310774 3.67385456]. Измените форму ваших данных либо с помощью array.reshape(-1, 1), если ваши данные содержат один объект, либо array.reshape(1, -1), если они содержат один образец.
data = sns.load_dataset('iris', delimiter= ',')
data = pd.DataFrame({"A": [1, 2], "B": [3.0, 4.5]})
data.to_numpy()
X1 = np.random.normal(size=1000, loc=1,scale=1)
Y1 = np.random.normal(size=1000, loc=1,scale=1)
X2 = np.random.normal(size=1000, loc=4,scale=1)
Y2 = np.random.normal(size=1000, loc=4,scale=1)
X= np.concatenate([X1,X2])
Y = np.concatenate([Y1, Y2])
XY = np.vstack([X,Y]).T
plt.scatter(X,Y)
plt.axis('equal')
plt.show()
km= KMeans(n_clusters=3)
km.fit(XY)
cluster_labels = km.predict(XY)
colors = ('red', 'blue', 'green')
plt.scatter(X,Y,c=cluster_labels,cmap=matplotlib.colors.ListedColormap(colors))
print(km.cluster_centers_)
plt.scatter(km.cluster_centers_[:,0],km.cluster_centers_[:,1],c='black',marker='x')
plt.axis('equal')
plt.show()
#%%
pca = PCA(n_components=2)
X2d = pca.fit_transform(X)
fig = plt.figure()
colors = ['red', 'blue', 'green']
plt.scatter(X2d[:,0],X2d[:,1],c=Y,cmap=matplotlib.colors.ListedColormap(colors))
plt.axis('equal')
plt.show()
Комментарии:
1. Привет, Кэтрин, я не понял твоей проблемы. Я попытался запустить код, который вы предоставили с соответствующими библиотеками, и не обнаружил в нем ошибок. Можете ли вы рассказать об этом более подробно?
2. В вашем коде есть только небольшая опечатка:
data.to_numpy()
возвращает значение, и поэтому оно ничему не присваивается. Вы можете изменить его наdata = data.to_numpy()
. Кроме того, я попытался запустить его и тоже не нашел в нем ошибки.3. Так что даже с данными = data.to_numpy() Я все еще получаю ошибку типа. @GabrielMelodePaula Я пытаюсь использовать KMeans с набором данных iris от seaborn. Вот часть задания «Сопоставьте точки данных с соответствующими кластерами и вычислите среднюю ширину лепестков, длину лепестков, ширину лепестков и длину лепестков данных в каждом кластере». Я просто не хотел задавать этот вопрос, потому что я не пытаюсь заставить кого-либо делать за меня домашнее задание, я просто застрял
4. @Katherine для новой ошибки вам нужно поместить PCA на
XY
данные вместоX
. Эта ошибка возникает из-за того, что вы пытаетесь выполнить декомпозицию одной функции, что невозможно, PCA ожидает 2 или более функций в случаеXY
, если . Просто измените его наX2d = pca.fit_transform(XY)
5. Спасибо @GabrielMelodePaula