Sklearn-使用SVC对iris数据集进行分类

Sklearn-使用SVC对iris数据集进行分类

使用SVC对iris数据集进行分类预测

涉及内容包含:

  • 数据集的加载,训练集和测试集的划分
  • 训练svc模型,对测试集的预测
  • 输出混淆矩阵和分类报告
  • 使用Pipeline执行操作

iris数据集的加载

加载数据集

用DataFrame展示数据

划分训练集和测试集合

python 复制代码
from sklearn.datasets import load_iris
python 复制代码
iris = load_iris()
python 复制代码
iris.keys()
复制代码
dict_keys(['data', 'target', 'frame', 'target_names', 'DESCR', 'feature_names', 'filename'])
python 复制代码
data = iris['data']
target = iris['target']

# 以DataFrame显示所有的数据
import pandas as pd
df = pd.DataFrame(data,columns=iris['feature_names']) 
df['target'] = target # 添加target列

| | sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | target |
| 0 | 5.1 | 3.5 | 1.4 | 0.2 | 0 |
| 1 | 4.9 | 3.0 | 1.4 | 0.2 | 0 |
| 2 | 4.7 | 3.2 | 1.3 | 0.2 | 0 |
| 3 | 4.6 | 3.1 | 1.5 | 0.2 | 0 |
| 4 | 5.0 | 3.6 | 1.4 | 0.2 | 0 |
| ... | ... | ... | ... | ... | ... |
| 145 | 6.7 | 3.0 | 5.2 | 2.3 | 2 |
| 146 | 6.3 | 2.5 | 5.0 | 1.9 | 2 |
| 147 | 6.5 | 3.0 | 5.2 | 2.0 | 2 |
| 148 | 6.2 | 3.4 | 5.4 | 2.3 | 2 |

149 5.9 3.0 5.1 1.8 2

150 rows × 5 columns

python 复制代码
# 划分数据集:训练集和测试集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test = train_test_split(data,target,test_size=0.3) # 测试集占30%。训练集70%

训练svc模型

  • 导入库文件
  • 初始化svc
  • 训练svc
python 复制代码
from sklearn.svm import SVC
# 初始化SVC
svc = SVC()
# 训练
svc.fit(x_train,y_train)
# 查看训练效果
print("训练集的精度",svc.score(x_train,y_train))
# 对测试集预测的精度
print("对测试集的预测效果:",svc.score(x_test,y_test))

# 对测试集进行预测
y_pre = svc.predict(x_test)
# 表格对比预测与实际结果
df2 = pd.DataFrame(data = {
    'predict':y_pre,
    'true':y_test
})
复制代码
训练集的精度 0.9714285714285714
对测试集的预测效果: 0.9555555555555556

输出混淆矩阵和分类报告

  • 输出混淆矩阵:查看每个类预测的成功与失败的情况
  • 输出分类报告:查看分类的性能
python 复制代码
from sklearn.metrics import confusion_matrix

# 输出混淆矩阵
con_matrix = confusion_matrix(y_test,y_pre)
print(con_matrix)
复制代码
[[12  0  0]
 [ 0 15  1]
 [ 0  1 16]]
python 复制代码
from sklearn.metrics import classification_report
# 输出分类报告
report = classification_report(y_test,y_pre,
                            target_names=iris['target_names'])
print(report)
复制代码
              precision    recall  f1-score   support

      setosa       1.00      1.00      1.00        12
  versicolor       0.94      0.94      0.94        16
   virginica       0.94      0.94      0.94        17

    accuracy                           0.96        45
   macro avg       0.96      0.96      0.96        45
weighted avg       0.96      0.96      0.96        45

相关推荐
分布式存储与RustFS5 分钟前
RustFS的边缘计算优化方案在5G MEC场景下的实测数据如何?
人工智能·5g·开源·边缘计算·rustfs
2501_9248905212 分钟前
商超场景徘徊识别误报率↓79%!陌讯多模态时序融合算法落地优化
java·大数据·人工智能·深度学习·算法·目标检测·计算机视觉
SalvoGao34 分钟前
空转学习 | cell-level 与 spot-level的区别
人工智能·深度学习·学习
初岘37 分钟前
自动驾驶GOD:3D空间感知革命
人工智能·3d·自动驾驶
什么都想学的阿超1 小时前
【大语言模型 15】因果掩码与注意力掩码实现:深度学习中的信息流控制艺术
人工智能·深度学习·语言模型
码蛊仙尊1 小时前
当我们想用GPU(nlp模型篇)
人工智能·自然语言处理
学习3人组1 小时前
手写数字识别代码
人工智能·python
Codebee2 小时前
Qoder初体验:从下载到运行OneCode可视化设计器的完整实战指南
人工智能
双向332 小时前
高并发AI服务部署方案:vLLM、TGI、FastChat性能压测报告
人工智能
JANGHIGH2 小时前
在自动驾驶中ESKF实现GINS时,是否将重力g作为变量考虑进去的目的是什么?
人工智能·机器人·自动驾驶