如何在 scikit learn 中获取模型属性(不是超参数)

数据挖掘 机器学习 scikit-学习 聚类
2022-02-23 15:31:02

如何获取模型属性列表(不是传递给 Estimator 类的超参数)?

例如:

kmeans = KMeans(n_clusters=5) 
kmeans.fit(X)
kmeans.labels_ 

如何从模型对象(以_结尾)获取标签等属性列表?

4个回答

我相信您正在尝试在拟合数据之前访问“labels_” 。

from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],
               [10, 2], [10, 4], [10, 0]])
kmeans = KMeans(n_clusters=2, random_state=0).fit(X)

def get_properies(model):   
  return [i for i in model.__dict__ if i.endswith(‘_’)] 

get_properies(kmeans)

['n_clusters','init','max_iter','tol','precompute_distances','n_init','verbose','random_state','copy_x','n_jobs','算法','cluster_centers_','标签_','惯性_','n_iter_']

您可以从相应算法的 sklearn 页面中找到算法的属性列表。

对于 Kmeans:

Attributes

cluster_centers_ :ndarray of shape (n_clusters, n_features)
Coordinates of cluster centers. If the algorithm stops before fully converging (see tol and max_iter), these will not be consistent with labels_.

labels_ :ndarray of shape (n_samples,)
Labels of each point

inertia_ :float
Sum of squared distances of samples to their closest cluster center.

n_iter_ :int
Number of iterations run.

参考:https ://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

我认为您的问题是如何找到模型的属性(参数是用于调整模型的参数)。

您可以在属性部分的该模型的 Scikit-learn 文档中找到模型属性。

K-Means 的属性:

  • cluster_centers_: ndarray of shape (n_clusters, n_features) 集群中心的坐标。如果算法在完全收敛之前停止(参见 tol 和 max_iter),这些将与 label_ 不一致。

  • labels_: ndarray of shape (n_samples,) 每个点的标签

  • 惯性_:样本到最近的聚类中心的距离平方和。

  • n_iter_:运行的迭代次数。

当你拟合模型时(比如说回归)

model.fit(x,y)

要获取模型参数,您可以尝试

model.params_

这给出了 y=b0+b1*x 中 b0,b1 的值