Python中Coef_.T是什么?.T属性的含义及使用目的
coef_.T 功能说明 .T不是coef_的专属属性后缀,它是NumPy数组自带的转置接口,作用是对二维数组做行列互换。scikit-learn所有线性模型的coef_返回值都是NumPy数组,因此可以直接调用.T。这是NumPy的基础功能,不会出现在LogisticRegression的专属API文档里,你搜不到相关说明是找错了文档范围。- 这段代码里用转置的原因完全是适配matplotlib的绘图逻辑:
- 训练完成的LogisticRegression模型,
coef_的数组形状为(分类类别数, 输入特征数):每一行对应某一个类别的线性方程系数集合,每一列对应单个特征在不同类别下的系数。即使是二分类场景,coef_也是形状为(1, 特征数)的二维数组,不是一维数组。 plt.plot()接收二维数组作为绘图输入时,默认按数组的列为单位生成独立的序列线条。这段代码的目的是可视化不同正则化强度C下,每个特征对应的模型系数大小,对coef_做转置后数组形状变为(特征数, 分类类别数),刚好匹配plot的输入规则,传入后每个标记点就能准确对应单个特征的系数值,不会出现维度错位。
- 训练完成的LogisticRegression模型,
- 你提供的示例代码如下:
for C, marker in zip([0.001, 1, 100], ['o', '^', 'v']): lr_l1 = LogisticRegression(C=C, penalty="l1").fit(X_train, y_train) print("Training accuracy of l1 logreg with C={:.3f}: {:.2f}".format( C, lr_l1.score(X_train, y_train))) print("Test accuracy of l1 logreg with C={:.3f}: {:.2f}".format( C, lr_l1.score(X_test, y_test))) plt.plot(lr_l1.coef_.T, marker, label="C={:.3f}".format(C))
调试时可以直接打印
lr_l1.coef_.shape和lr_l1.coef_.T.shape,能直观看出转置前后的维度差异,方便理解。
内容的提问来源于stack exchange,提问作者faik mermer
相关产品推荐
相关产品推荐

