>我仍然是DL的初学者,我正在尝试使用VGG16预训练模型进行图像分类并将特征哑入csv文件,我得到了4096个特征,如下结果:
1 2 3 4 ... 4096
0.12 0.23 0.345 0.5372 ... 0.21111
0.2313 0.321 0.214 0.3542 ... 0.46756
.
.
我正在尝试使用SelectKBest
功能选择来选择最好的 2048 功能而不是 4096,您能告诉我如何请
我试过:
data = pd.read_csv("multiClassVGG16.csv")
array = data.values
X = array[:,1:]
Y = array[:,0]
test = SelectKBest(score_func=chi2, k=4)
fit = test.fit(X,Y)
# Summarize scores
np.set_printoptions(precision=3)
print(fit.scores_)
features = fit.transform(X)
# # Summarize selected features
print(features[0:2048,:])
# Feature extraction
model = LogisticRegression()
rfe = RFE(model, 2048)
fit = rfe.fit(X, Y)
print("Num Features: %s" % (fit.n_features_))
print("Selected Features: %s" % (fit.support_))
print("Feature Ranking: %s" % (fit.ranking_))
我只是希望重新生成一个具有最佳 2048 功能的新数据帧,以将其再次转储到 CSV 期望的结果 :
1 2 3 4 ... 2048
0.12 0.23 0.345 0.5372 ... 0.21111
0.2313 0.321 0.214 0.3542 ... 0.46756
特征提取部分应该是类似于
# Feature extraction
model = LogisticRegression()
rfe = RFE(model, 2048)
rfe.fit(X, Y)
# Extracting 2048 features
feat = rfe.transform(X)
feat.shape
# (n_rows, 2048)
# Save to CSV
np.savetxt("foo.csv", feat, delimiter=",")
您可以使用fit_transform()
方法将数据拟合到特征提取器的过程以及提取所需特征的过程结合起来。
浏览文档以更好地了解作为方法一部分的其他功能。