Как мне отменить масштабирование всего фрейма данных? - PullRequest
0 голосов
/ 27 мая 2020

Когда я масштабировал каждый столбец по отдельности, изменить процесс было легко. Пример:

sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
reverse=sc_X.inverse_transform(X_train)

когда мне нужно масштабировать весь фрейм данных, его легко масштабировать в одной строке кода:

dfv = StandardScaler().fit_transform(df)

Но как изменить этот процесс? Я имею в виду, как мне изменить приведенный ниже код, чтобы график имел исходный масштаб, но правильный цвет категории кластеров? Тем более, что dfv больше не является фреймом данных, поскольку кажется, что масштабирование изменило его на массив?

# Model
kmeans = KMeans(n_clusters = 5, init = 'k-means++', random_state = 15)
y_kmeans = kmeans.fit_predict(dfv)
# 2D Visualisation after clustering
X = dfv
df.columns.tolist()
fig = plt.figure(figsize=(15,5))
ax = fig.gca()
ax.grid(which='major', linestyle='-', linewidth='0.5', color='white')
ax.set_facecolor((0.898, 0.898, 0.898))

plt.scatter(X[y_kmeans == 0, 0], X[y_kmeans == 0, 1], s = 20, c = 'red', label = 'Cluster1')
plt.scatter(X[y_kmeans == 1, 0], X[y_kmeans == 1, 1], s = 20, c = 'blue', label = 'Cluster2')
plt.scatter(X[y_kmeans == 2, 0], X[y_kmeans == 2, 1], s = 20, c = 'limegreen', label = 'Cluster3')
plt.scatter(X[y_kmeans == 3, 0], X[y_kmeans == 3, 1], s = 20, c = 'magenta', label = 'Cluster4')
plt.scatter(X[y_kmeans == 4, 0], X[y_kmeans == 4, 1], s = 20, c = 'blueviolet', label = 'Cluster5')

ax.set_title('Features after clustering')
ax.set_xlabel(df.columns[0])
ax.set_ylabel(df.columns[1])
plt.legend()
plt.show()
...