sklearn make_blobs()
函数可用于生成各向同性的高斯Blob进行聚类。
我正在尝试绘制make_blobs()
函数生成的数据。
import numpy as np
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
arr, blob_labels = make_blobs(n_samples=1000, n_features=1,
centers=1, random_state=1)
a = plt.hist(arr, bins=np.arange(int(np.min(arr))-1,int(np.max(arr))+1,0.5), width = 0.3)
这段代码给出了正态分布图,这很有意义。
blobs, blob_labels = make_blobs(n_samples=1000, n_features=2,
centers=2, random_state=1)
a = plt.scatter(blobs[:, 0], blobs[:, 1], c=blob_labels)
这段代码给出了一个2簇图,这也很有意义。
我想知道是否有一种方法可以用参数make_blobs()
绘制由centers=2 n_features=1
函数生成的数据。
arr, blob_labels = make_blobs(n_samples=1000, n_features=1,
centers=2, random_state=1)
我尝试过plt.hist()
,它给出了另一个正态分布图。
我不知道如何对数据使用plt.scatter()
。
我无法想象情节的样子。
答案 0 :(得分:1)
您的问题尚不清楚。
我尝试过
plt.hist()
,它给出了另一个正态分布图。
嗯,不完全是;它给出了一个双峰高斯混合图:
arr, blob_labels = make_blobs(n_samples=1000, n_features=1,
centers=2, random_state=1)
a = plt.hist(arr, bins=np.arange(int(np.min(arr))-1,int(np.max(arr))+1,0.5), width = 0.3)
符合预期,因为我们现在有centers=2
。
我不知道如何对数据使用
plt.scatter()
。
根据定义,散点图需要2D数据;来自docs:
y 与 x 的散点图,其标记大小和/或颜色都不同。
在这里,由于n_features=1
,我们实际上只有 x 而没有 y 。
一维“散点图”实际上是一条线,我们可以使用plot
对其进行可视化,正如How to plot 1-d data at given y-value with pylab中很好地解释的那样;在您的情况下:
val = 0. # this is the value where you want the data to appear on the y-axis.
a = plt.plot(arr, np.zeros_like(arr) + val, 'x')
我们当然应该记住,纵轴只是可视化的一个方便,对于没有 y 值的数据什么也没说。
是否要为每个中心使用不同的颜色和/或标记?
val = 0. # this is the value where you want the data to appear on the y-axis.
plt.plot(arr[blob_labels==0], np.zeros_like(arr[blob_labels==0]) + val, 'x', color='y')
plt.plot(arr[blob_labels==1], np.zeros_like(arr[blob_labels==1]) + val, '+', color='b')
plt.show()
对于较大的样本,情况开始变得有些有趣;请注意n_samples=10000
的重叠部分: