svmpython查看各特征权重
时间: 2023-07-25 14:07:09 浏览: 368
在Python中,可以通过训练好的SVM模型获取各特征权重。具体操作如下:
1. 导入相关库和数据
```python
import pandas as pd
from sklearn import svm
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
```
2. 加载数据集并进行标准化处理
```python
data = load_breast_cancer()
X = data.data
y = data.target
scaler = StandardScaler()
X = scaler.fit_transform(X)
```
3. 划分训练集和测试集
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
```
4. 训练SVM模型
```python
svm_clf = svm.SVC(kernel='linear')
svm_clf.fit(X_train, y_train)
```
5. 获取特征权重
```python
feature_importance = svm_clf.coef_
```
其中,`svm_clf.coef_`属性返回的是一个数组,数组的每个元素表示对应特征的权重。我们可以使用`pd.DataFrame`将它转化为一个DataFrame方便查看。
```python
df = pd.DataFrame(feature_importance, columns=data.feature_names)
print(df)
```
输出的结果类似于:
```
mean radius mean texture mean perimeter ... worst symmetry worst fractal dimension
0 1.281187 -0.053127 0.935973 ... -0.160391 -0.051359
```
这个结果表示每个特征对应的权重,正数代表正相关,负数代表负相关。例如,`mean radius`这个特征的权重为1.281187,表示该特征与目标变量正相关。
阅读全文