代码之家  ›  专栏  ›  技术社区  ›  Seungho Lee

Scikit中的make blobs中的“n_features”和“centers”参数意味着什么?

  •  2
  • Seungho Lee  · 技术社区  · 8 年前

    我查阅了有关 n_features centers 参数在 make_blobs 功能在 SciKit . 然而,我所看到的每一个解释对我来说都不是那么清楚,因为我刚接触 科学工具包 还有数学。我想知道这两个参数是什么: n-特征 , 中心 麦克布洛布 功能如下。

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

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  3
  •   Yohanes Gultom    7 年前

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

    from sklearn.datasets.samples_generator import make_blobs
    从sklearn.neighbors导入Kneighbors分类器
    来自sklearn.model_selection import train_test_split
    从sklearn.metrics导入准确度得分
    
    x,y=生成blobs(n_features=2,centers=3)
    x_train,x_test,y_train,y_test=列车_test_split(x,y)
    型号=KneighborsClassifier()
    型号.装配(X轴,Y轴)
    y_pred=模型.预测(x_测试)
    acc=准确度得分(y_测试,y_pred)*100
    print('准确度:%'.格式(acc))
    < /代码> 
    
    

    现在,正如您所提到的,n_featuresdetermined how columns or features the generated dataset will have.在机器学习中,特征对应于数字特征数据。例如,在iris dataset中,有4个功能(sepal length、sepal width、patal length和patal width),因此数据集中有4个数值列。因此,通过增加n_featuresinmake_blobs,我们将添加更多功能,从而增加生成数据集的复杂性。

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

    from sklearn.datasets.samples_generator import make_blobs
    导入Matlab
    
    图1
    x,y=制造斑点(n_特征=2,中心=1)
    图()
    散点图(x[:,0],x[:,1],c=y)
    plt.savefig('centers_1.png')
    plt.title('中心=1')
    
    图2
    x,y=生成blobs(n_features=2,centers=2)
    图()
    散点图(x[:,0],x[:,1],c=y)
    plt.title('中心=2')
    
    图3
    x,y=生成blobs(n_features=2,centers=3)
    图()
    散点图(x[:,0],x[:,1],c=y)
    plt.title('中心=3')
    
    显示()
    < /代码> 
    
    

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

    生成数据样本或数据集。在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个特征(sepal length、sepal width、patal length和patal width),所以数据集中有4个数值列。所以通过增加n-特征在里面麦克布洛布,我们正在添加更多的特性,从而增加生成数据集的复杂性。

    至于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

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

    推荐文章