支持向量机的特征选择 python
时间: 2023-10-06 15:04:44 浏览: 35
支持向量机可以通过特征选择来提高模型的性能和效率。在Python中,可以使用scikit-learn库中的SelectKBest和SelectFromModel来进行特征选择。
1. SelectKBest:根据各种统计测试的分数选择前k个最佳特征。
```python
from sklearn.feature_selection import SelectKBest, f_classif
from sklearn.svm import SVC
# 选择前k个最佳特征
k = 5
selector = SelectKBest(f_classif, k=k)
# 训练SVM模型
svm = SVC()
svm.fit(selector.fit_transform(X_train, y_train), y_train)
# 在测试集上评估模型
svm.score(selector.transform(X_test), y_test)
```
2. SelectFromModel:使用训练后的模型来选择最佳特征。
```python
from sklearn.feature_selection import SelectFromModel
from sklearn.svm import LinearSVC
# 训练支持向量机模型
svm = LinearSVC(C=0.01, penalty="l1", dual=False)
svm.fit(X_train, y_train)
# 选择最佳特征
selector = SelectFromModel(svm, prefit=True)
X_train_new = selector.transform(X_train)
X_test_new = selector.transform(X_test)
# 在新特征上训练模型
svm_new = LinearSVC(C=0.01, penalty="l1", dual=False)
svm_new.fit(X_train_new, y_train)
# 在测试集上评估模型
svm_new.score(X_test_new, y_test)
```
以上是两种常用的特征选择方法,可以根据具体实验需求来选择。