Python ,SVM模型效果的评估指标

混淆矩阵中
模型整体效果:准确率:
 
1. 准确率 Accuracy 就是所有预测正确的所有样本除以总样本,通常来说越接近 1 越好
 
2. 捕捉少数类的艺术:精确度,召回率和 F1 score:
精确度 Precision ,又叫查准率,表示所有被我们预测为是少数类的样本中,真正的少数类所占的比例。 精确度是 将多数类判 错后所需付出成本 的衡量。
# 所有判断正确并确实为 1 的样本 / 所有被判断为 1 的样本
# 对于没有 class_weight ,没有做样本平衡的灰色决策边界来说:
( y [ y == clf . predict ( X )] == 1 ). sum () / ( clf . predict ( X ) == 1 ). sum ()
# 对于有 class_weight ,做了样本平衡的红色决策边界来说:
( y [ y == wclf . predict ( X )] == 1 ). sum () / ( wclf . predict ( X ) == 1 ). sum ()
 
召回率 Recall ,又被称为敏感度 (sensitivity) ,真正率,查全率,表示所有真实为 1 的样本中,被我们预测正确的样
本所占的比例。
 

#所有predict为1的点 / 全部为1的点的比例
#对于没有class_weight,没有做样本平衡的灰色决策边界来说:
(y[y == clf.predict(X)] == 1).sum()/(y == 1).sum()

#对于有class_weight,做了样本平衡的红色决策边界来说:
(y[y == wclf.predict(X)] == 1).sum()/(y == 1).sum()

假负率( False Negative Rate ,它等于 1 - Recall ,用于衡量所有真实
1 的样本中,被我们错误判断为 0
判错多数类的考量:特异度与假正率:
特异度 (Specifificity) 表示所有真实为 0 的样本中,被正确预测为 0 的样本所占的比例。在支持向量机中,可以形象地
表示为,决策边界下方的点占所有紫色点的比例。

#所有被正确预测为0的样本 / 所有的0样本
#对于没有class_weight,没有做样本平衡的灰色决策边界来说:
(y[y == clf.predict(X)] == 0).sum()/(y == 0).sum()

#对于有class_weight,做了样本平衡的红色决策边界来说:
(y[y == wclf.predict(X)] ==0).sum()/(y == 0).sum()

特异度衡量了一个模型将多数类判断正确的能力,而 1 - specifificity 就是一个模型将多数类判断错误的能力 ,这种
能力被计算如下,并叫做 假正率。
 
类                                                           含义
sklearn.metrics.confusion_matrix    混淆矩阵
sklearn.metrics.accuracy_score        准确率accuracy
sklearn.metrics.precision_score          精确度precision
sklearn.metrics.recall_score        召回率recall
sklearn.metrics.precision_recall_curve       精确度- 召回率平衡曲线
sklearn.metrics.f1_score        F1 measure
 
Python中使用Scikit-learn库(sklearn)建立SVM模型非常直观。以下是创建一个简单的线性SVM模型的基本步骤: 1. **安装所需的库**:首先确保已经安装了`scikit-learn`,如果没有,可以使用pip安装: ```bash pip install scikit-learn ``` 2. **导入必要的模块**: ```python from sklearn import svm from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler (用于预处理数据) import pandas as pd (如果数据在CSV等文件中) ``` 3. **加载和准备数据**: - 加载数据集(例如csv文件) - 划分特征(X)和目标变量(y) - 对数值型特征进行标准化或归一化 ```python df = pd.read_csv('your_data.csv') X = df.drop('target_column', axis=1) # 假设'目标_column'是你想要预测的目标 y = df['target_column'] X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) ``` 4. **创建并训练SVM模型**: ```python model = svm.LinearSVC() # 或者使用svm.SVC(kernel='linear') for linear kernel model.fit(X_train_scaled, y_train) ``` 5. **评估模型**: ```python predictions = model.predict(X_test_scaled) accuracy = model.score(X_test_scaled, y_test) ``` 6. **保存模型**: ```python joblib.dump(model, 'svm_model.pkl') # 使用joblib库保存模型以便后续使用 ``` 如果你的数据是非线性的,你可以选择不同的核函数,如`kernel='rbf'`(径向基函数)。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值