我已经浏览了关于 n_features
中 centers
函数中的 make_blobs
和 SciKit
参数的文档。但是,由于我是 SciKit
和数学的新手,所以我所看到的每一个解释对我来说都不是很清楚。我想知道这两个参数有什么作用: n_features
, centers
在 make_blobs
中的作用如下。
make_blobs(n_samples=50, n_features=2, centers=2, random_state=75)
先感谢您。
最佳答案
make_blobs
函数是 sklearn.datasets.samples_generator
的一部分。包中的所有方法,帮助我们生成数据样本或数据集。在 scikit-learn 的机器学习中,数据集用于评估机器学习模型的性能。这是一个关于如何评估 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
对应于数据中生成的类数。它使用中心作为术语,因为属于同一类的样本倾向于聚集在中心(坐标)附近。关于scikit-learn - SciKit 的 make_blobs 中的 "n_features"和 "centers"参数是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51709878/