用python写一段回归特征消去方法(Recursive feature selection based on support vector machine)优化的SVM代码
时间: 2024-05-03 15:19:12 浏览: 200
以下是一个使用递归特征消除和SVM进行特征选择的Python代码示例:
```python
from sklearn.datasets import make_classification
from sklearn.svm import SVC
from sklearn.feature_selection import RFE
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
# 生成一些样本数据(这里使用make_classification函数生成500个样本,每个样本有10个特征)
X, y = make_classification(n_samples=500, n_features=10, n_informative=5, n_redundant=0, random_state=42)
# 将数据集分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 创建SVM分类器
svm = SVC(kernel='linear', C=1)
# 创建递归特征消除对象,设置每次迭代中删除的特征数为1,使用SVM作为评估器
rfe = RFE(estimator=svm, n_features_to_select=5, step=1)
# 对训练数据进行拟合
rfe.fit(X_train, y_train)
# 输出所选择的特征
selected_features = [i for i, x in enumerate(rfe.support_) if x]
print("Selected features: {}".format(selected_features))
# 使用所选择的特征进行训练和预测
svm.fit(X_train[:, selected_features], y_train)
y_pred = svm.predict(X_test[:, selected_features])
# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy: {:.2f}".format(accuracy))
```
在上面的代码中,我们首先使用make_classification函数生成了一个包含500个样本和10个特征的数据集。然后,我们将数据集分为训练集和测试集,并创建一个SVM分类器。接下来,我们创建了一个RFE对象并将其与SVM分类器一起使用,以选择5个最重要的特征。最后,我们使用所选特征对SVM进行拟合和预测,并计算准确率。
阅读全文