make_blobs介绍
scikit中的make_blobs方法常被用来生成聚类算法的测试数据,直观地说,make_blobs会根据用户指定的特征数量、中心点数量、范围等来生成几类数据,这些数据可用于测试聚类算法的效果。
make_blobs方法:
sklearn.datasets.make_blobs(n_samples=100, n_features=2,centers=3, cluster_std=1.0, center_box=(-10.0, 10.0), shuffle=True, random_state=None)[source]
其中:
n_samples 是待生成的样本的总数。
n_features 是每个样本的特征数。
centers 表示类别数。
cluster_std 表示每个类别的方差,例如我们希望生成2类数据,其中一类比另一类具有更大的方差,可以将cluster_std设置为[1.0,3.0]。
random_state 相同的值具有可重现性,也就是所指定一个相同的,以便于下次重现
例:生成3类数据用于聚类(100个样本,每个样本有2个特征)
from sklearn.datasets import make_blobs
from matplotlib import pyplot
data,target=make_blobs(n_samples=100,n_features=2,centers=3)
print(data)
print(target)
# 在2D图中绘制样本,每个样本颜色不同
pyplot.scatter(data[:,0],data[:,1],c=target);
pyplot.show()
[[ 8.16950469 -0.8515653 ]
[ 3.89178889 -0.74819172]
[10.39197688 -1.03606434]
[ 9.47585566 -2.54015823]
....
[ 1.03335689 5.44084402]
[ 2.48195306 -0.58851947]
[10.62815561 -0.26532214]]
[0 2 0 0 1 1 1 2 0 2 2 1 0 2 1 2 2 0 2 1 2 2 1 2 0 2 2 0 2 0 0 2 2 1 1 2 0
1 1 1 0 0 0 2 1 2 2 0 1 0 1 1 2 0 1 1 1 2 0 1 0 1 2 0 1 0 2 1 2 0 2 2 0 0
1 0 2 0 0 2 1 2 1 0 1 0 0 1 0 2 2 1 0 0 1 1 1 1 2 0]
为每个类别设置不同的方差,只需要在上述代码中加入cluster_std参数即可:
from sklearn.datasets import make_blobs
from matplotlib import pyplot
data,target=make_blobs(n_samples=100,n_features=2,centers=3,cluster_std=[1.0,3.0,2.0])
#在2D图中绘制样本,每个样本颜色不同
pyplot.scatter(data[:,0],data[:,1],c=target);
pyplot.show()
这里就可以看出方差反映的数据的离散程度
固定中心的位置
from sklearn.datasets import make_blobs
from matplotlib import pyplot
data, target = make_blobs(n_samples=100, n_features=2, centers=[[-4,-4],[0,0],[4,4]])
data = np.concatenate((data, [[-4,-4],[0,0],[4,4]]), axis=0)
target = np.concatenate((target, [4,5,6]))
# 在2D图中绘制样本,每个样本颜色不同
pyplot.scatter(data[:, 0], data[:, 1], c=target);
pyplot.show()