【发布时间】:2021-02-08 20:58:54
【问题描述】:
我最近开始使用 python 在机器学习和与之相关的领域工作。今天我正在研究一个数据集,我想在其中应用降维并应用我的模型来评估分数。这个数据集有 30 个特征。
我从一个简单的算法开始,即逻辑回归,但在应用逻辑回归之前,我想做一个 PCA。 为了确定最好的组件数量,我使用了 gridsearchCV 和我的逻辑回归,只使用 C 参数和我选择组件数量的 PCA。 我得到的结果是,我用于 PCA 的组件越多,精度得分就越高。对于 n_components=30 的示例,我的精度得分为 0.81。
问题是我认为 PCA 用于降维(即使用更少的特征)并且它可以帮助提高分数。有什么不明白的地方吗?
pca = PCA()
logistic = LogisticRegression()
pipe = Pipeline(steps=[('pca', pca), ('logistic', logistic)])
param_grid = {
'pca__n_components': [5,10,15,20,25,30],
'logistic__C': [0.01,0.1,1,10,100]
}
search = GridSearchCV(pipe, param_grid, cv=5, n_jobs=-1, scoring='precision') # fix adding a tuple scoring
search.fit(X_train, y_train)
print("Best parameter (CV score=%0.3f):" % search.best_score_)
print(search.best_params_)
results = pd.DataFrame(search.cv_results_)
输出:最佳参数(CV 分数=0.881): {'logistic__C':0.01,'pca__n_components':30}
提前感谢您的回复
【问题讨论】:
-
working with fewer features ... it could help increasing score。它可以但不能肯定。只有 CV 可以告诉您预处理是否会提高模型分数。查看另一个成功尝试特征选择的示例here
标签: python scikit-learn data-science pca