当 python 中的簇数为 2 时,我的绘图没有显示结果
My plot didn't show the result when the number of clusters is 2 in python
我想在一张图片中显示 7 个不同数量的簇,但它总是从簇 = 3 开始
当我没有使用for循环显示7个图时,它可以显示cluster = 2时的图片,我不知道这里有什么错误
import numpy as np
import resources as re
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import metrics
from sklearn.model_selection import train_test_split
dataset , h, c = re.load_csv("CIELab_dataset.csv")
Train_data, Test_data = re.train_test_split(dataset, 0.75)
#plt.show()
plt.figure()
order_plot = 1
for i in range (2,9):
y_pred = KMeans(n_clusters= i , random_state=0).fit_predict(dataset)
#Calinski-Harabasz- evaluation critera
scores = metrics.calinski_harabasz_score(dataset, y_pred)
plt.scatter(dataset[:, 0], dataset[:, 1], dataset[:, 2], c=y_pred)
plt.subplot(4, 2, i-1)
print("the number of predicted clusters",i,"scores:",scores)
plt.show()
你可以看到 plot 中的第一张图是 clusters = 3(3 个不同颜色的簇),下一个 = 4.. 在 8 的末尾。但我认为它应该从 cluster = 2 开始,但为什么没有'显示
您正在绘制两个集群数据后创建第一个子图。
您需要用 plt.scatter
和 plt.subplot
交换行
示例:
import numpy as np, matplotlib.pyplot as plt
colors = ['_', 'red', 'green', 'blue', 'purple', 'tomato', 'orange', 'darkslateblue', 'olive', 'orange', 'teal']
正确顺序:
for a in range(1,10):
plt.subplot(3,3,a)
plt.scatter(np.random.randint(0,10, 10), np.random.randint(0,10, 10), c=colors[a])
左上图是红色的,所以,这是列表中的元素 1。
顺序不正确:
for a in range(1,10):
plt.scatter(np.random.randint(0,10, 10), np.random.randint(0,10, 10), c=colors[a])
plt.subplot(3,3,a)
左上图为绿色,即元素 2。最后一个子图是空的。
我想在一张图片中显示 7 个不同数量的簇,但它总是从簇 = 3 开始 当我没有使用for循环显示7个图时,它可以显示cluster = 2时的图片,我不知道这里有什么错误
import numpy as np
import resources as re
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
from sklearn import metrics
from sklearn.model_selection import train_test_split
dataset , h, c = re.load_csv("CIELab_dataset.csv")
Train_data, Test_data = re.train_test_split(dataset, 0.75)
#plt.show()
plt.figure()
order_plot = 1
for i in range (2,9):
y_pred = KMeans(n_clusters= i , random_state=0).fit_predict(dataset)
#Calinski-Harabasz- evaluation critera
scores = metrics.calinski_harabasz_score(dataset, y_pred)
plt.scatter(dataset[:, 0], dataset[:, 1], dataset[:, 2], c=y_pred)
plt.subplot(4, 2, i-1)
print("the number of predicted clusters",i,"scores:",scores)
plt.show()
你可以看到 plot 中的第一张图是 clusters = 3(3 个不同颜色的簇),下一个 = 4.. 在 8 的末尾。但我认为它应该从 cluster = 2 开始,但为什么没有'显示
您正在绘制两个集群数据后创建第一个子图。
您需要用 plt.scatter
和 plt.subplot
示例:
import numpy as np, matplotlib.pyplot as plt
colors = ['_', 'red', 'green', 'blue', 'purple', 'tomato', 'orange', 'darkslateblue', 'olive', 'orange', 'teal']
正确顺序:
for a in range(1,10):
plt.subplot(3,3,a)
plt.scatter(np.random.randint(0,10, 10), np.random.randint(0,10, 10), c=colors[a])
左上图是红色的,所以,这是列表中的元素 1。
顺序不正确:
for a in range(1,10):
plt.scatter(np.random.randint(0,10, 10), np.random.randint(0,10, 10), c=colors[a])
plt.subplot(3,3,a)
左上图为绿色,即元素 2。最后一个子图是空的。