SciKit中的make_blobs中的“ n_features”和“ centers”参数是什么意思?

时间:2018-08-06 14:24:56

标签: scikit-learn

我已经浏览了n_featurescenters函数中有关make_blobsSciKit参数的文档。但是,由于我是SciKit和数学的新手,所以我所看到的每种解释听起来都不是很清楚。我想知道这两个参数在n_features函数中的作用是centersmake_blobs,如下所示。

make_blobs(n_samples=50, n_features=2, centers=2, random_state=75)

谢谢。

1 个答案:

答案 0 :(得分:3)

make_blobs函数是sklearn.datasets.samples_generator的一部分。包中的所有方法均有助于我们生成数据样本或数据集。在scikit学习所有的机器学习中,数据集用于评估机器学习模型的性能。这是有关如何评估KNN classifier的示例:

from sklearn.datasets.samples_generator import make_blobs
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

X, y = make_blobs(n_features=2, centers=3)
X_train, X_test, y_train, y_test = train_test_split(X, y)
model = KNeighborsClassifier()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
acc = accuracy_score(y_test, y_pred) * 100
print('accuracy: {}%'.format(acc))

现在,如上所述,n_features确定了生成的数据集将具有多少列或要素。在机器学习中,特征对应于数值特征数据。例如,在Iris Dataset中,有4个要素(“分隔长度”,“分隔宽度”,“分隔长度”和“分隔宽度”),因此数据集中有4个数字列。因此,通过在n_features中增加make_blobs,我们将添加更多功能,从而增加了生成数据集的复杂性。

对于centers,通过可视化生成的数据集更容易理解。我使用matplotlib来帮助我们:

from sklearn.datasets.samples_generator import make_blobs
import matplot

# plot 1
X, y = make_blobs(n_features=2, centers=1)
plt.figure()
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.savefig('centers_1.png')
plt.title('centers = 1')

# plot 2    
X, y = make_blobs(n_features=2, centers=2)
plt.figure()
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title('centers = 2')

# plot 3
X, y = make_blobs(n_features=2, centers=3)
plt.figure()
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.title('centers = 3')

plt.show()

centers=1

centers=2

centers=3

如果运行上面的代码,您可以很容易地看到centers对应于数据中生成的类数。它使用中心作为术语,因为属于同一类别的样本倾向于聚集在中心附近(坐标)。