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

相关推荐
Shockang2 分钟前
LangGraph 状态机实战
人工智能
刹那芳华199214 分钟前
循环神经网络的从零开始实现(RNN)
人工智能·rnn·深度学习
阿童木写作24 分钟前
跨境图片翻译工具多合一,批量图片视频字幕翻译加智能抠图
人工智能·python·音视频·语音识别
科技之门25 分钟前
AI3D从建模到贴图、绑骨和动画的完整流程怎么做?V2Fun完整工作流指南
人工智能·3d·贴图
宇宙第一小趴菜25 分钟前
二、机器学习的应用领域和发展史
人工智能·机器学习
前端开发江鸟31 分钟前
我写过 MCP Server,却一直以为 MCP 只有 Tool
人工智能
天国梦1 小时前
自习室智能化升级避坑指南:天学网AI智习室方案实测与选型建议
大数据·人工智能
阿里云云原生1 小时前
可用性从 99.9% 跃升至 99.995%:畅捷通如何用 AI 重塑运维底座?
运维·网络·人工智能
ZhengEnCi1 小时前
MoE(Mixture of Experts,混合专家模型)深度解析:从路由机制到专家专业化的迷思
人工智能
shxjnpl2 小时前
Qwen3-ASR 从 PyTorch 迁移到 vLLM:一次信创环境下的推理路径改造实录
人工智能·pytorch·vllm