SVC.coef_ 和样本中的特征数量不同
A different number of features in the SVC.coef_ and samples
我下载了数据。
news = datasets.fetch_20newsgroups(subset='all', categories=['alt.atheism', 'sci.space'])
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(newsgroups.data)
y = news.target
print(X.shape)
X 的形状是 (1786, 28382)
接下来我训练模型并得到 coef_ shape
clf = svm.SVC(kernel='linear', random_state=241, C = 1.0000000000000001e-05)
clf.fit(X, y)
data = clf.coef_[0].data
print(data.shape)
形状是(27189,)
为什么特征数量不同?
所以总之一切都很好,你的权重矩阵在 clf.coef_ 中。它具有有效的形状,它是一个常规的 numpy 数组(如果数据稀疏,则为 scipy 稀疏数组)。您可以对其执行所有需要的操作,对其进行索引等。您尝试过的 .data 字段是属性,它保存数组的 internal 存储,它可以是不同的形状(因为它可能会忽略一些冗余等),但重点是您不应该出于您的目的使用 numpy 数组的这个内部属性。它公开用于低级方法,而不仅仅是读取
我下载了数据。
news = datasets.fetch_20newsgroups(subset='all', categories=['alt.atheism', 'sci.space'])
vectorizer = TfidfVectorizer()
X = vectorizer.fit_transform(newsgroups.data)
y = news.target
print(X.shape)
X 的形状是 (1786, 28382)
接下来我训练模型并得到 coef_ shape
clf = svm.SVC(kernel='linear', random_state=241, C = 1.0000000000000001e-05)
clf.fit(X, y)
data = clf.coef_[0].data
print(data.shape)
形状是(27189,)
为什么特征数量不同?
所以总之一切都很好,你的权重矩阵在 clf.coef_ 中。它具有有效的形状,它是一个常规的 numpy 数组(如果数据稀疏,则为 scipy 稀疏数组)。您可以对其执行所有需要的操作,对其进行索引等。您尝试过的 .data 字段是属性,它保存数组的 internal 存储,它可以是不同的形状(因为它可能会忽略一些冗余等),但重点是您不应该出于您的目的使用 numpy 数组的这个内部属性。它公开用于低级方法,而不仅仅是读取