支持向量机(iris)

代码:

python 复制代码
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn import svm
import numpy as np

# 定义每一列的属性
colnames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']
# 读取数据
iris = pd.read_csv('data\\iris.data', names=colnames)

# iris.head()是一个pandas库中的函数,用于显示数据集的前几行。默认情况下,它显示前5行数据。
"""
   sepal-length  sepal-width  petal-length  petal-width        class
0           5.1          3.5           1.4          0.2  Iris-setosa
1           4.9          3.0           1.4          0.2  Iris-setosa
2           4.7          3.2           1.3          0.2  Iris-setosa
3           4.6          3.1           1.5          0.2  Iris-setosa
4           5.0          3.6           1.4          0.2  Iris-setosa
"""
iris.head()

# drop():删除行或列
X = iris.drop('class', axis=1)  # 属性值
y = iris['class']   # 类别

scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

clf = svm.SVC(kernel='linear')
clf.fit(X_scaled, y)

# 随机生成3组测试数据,注意需要归一化处理
test_data = scaler.transform(np.array([[5.1, 3.5, 1.4, 0.2], [6.7, 3.1, 4.7, 1.5], [7.9, 3.8, 6.4, 2.0]]))

# 获得模型预测结果
pred = clf.predict(test_data)

print(pred)

对代码的解释:

因为iris.data中是这样的:

即前4列为属性,第5列为类别

定义属性与类别:

python 复制代码
# 定义每一列的属性
colnames = ['sepal-length', 'sepal-width', 'petal-length', 'petal-width', 'class']

读取数据,并给数据加上colnames:

python 复制代码
# 读取数据
iris = pd.read_csv('data\\iris.data', names=colnames)

print输出一下iris:

对于read_csv()方法:

(4条消息) 详解pandas的read_csv方法_小尛玮的博客-CSDN博客

对于head()函数:

python 复制代码
# iris.head()是一个pandas库中的函数,用于显示数据集的前几行。默认情况下,它显示前5行数据。
"""
   sepal-length  sepal-width  petal-length  petal-width        class
0           5.1          3.5           1.4          0.2  Iris-setosa
1           4.9          3.0           1.4          0.2  Iris-setosa
2           4.7          3.2           1.3          0.2  Iris-setosa
3           4.6          3.1           1.5          0.2  Iris-setosa
4           5.0          3.6           1.4          0.2  Iris-setosa
"""
iris.head()

对于drop()函数:

(3条消息) Pandas基本数据交互机制2-drop()方法_朱错错的哒哒哒的博客-CSDN博客

python 复制代码
# drop():删除行或列
X = iris.drop('class', axis=1)  # 属性值

'class':去掉属性为class的一行或一列

axis=1:去掉某一行,加上参数axis就是去掉某一列

这行代码的返回值为去掉属性为class的那一列之后的数据集,即所有属性

python 复制代码
y = iris['class']   # 类别

这行代码返回值为类别那一列

对于StandardScaler()方法与fit_transform方法

(3条消息) sklearn中StandardScaler()_汽水配辣条的博客-CSDN博客

python 复制代码
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

对于svm()方法

(3条消息) 【机器学习】svm.SVC参数详解_svm.svc中的参数以及作用_Xhfei1224的博客-CSDN博客

python 复制代码
clf = svm.SVC(kernel='linear')
clf.fit(X_scaled, y)

预测

python 复制代码
# 随机生成3组测试数据,注意需要归一化处理
test_data = scaler.transform(np.array([[5.1, 3.5, 1.4, 0.2], [6.7, 3.1, 4.7, 1.5], [7.9, 3.8, 6.4, 2.0]]))

# 获得模型预测结果
pred = clf.predict(test_data)

print(pred)
相关推荐
强哥之神12 分钟前
Nexa AI发布OmniAudio-2.6B:一款快速的音频语言模型,专为边缘部署设计
人工智能·深度学习·机器学习·语言模型·自然语言处理·音视频·openai
18号房客17 分钟前
一个简单的深度学习模型例程,使用Keras(基于TensorFlow)构建一个卷积神经网络(CNN)来分类MNIST手写数字数据集。
人工智能·深度学习·机器学习·生成对抗网络·语言模型·自然语言处理·tensorflow
数据分析能量站25 分钟前
神经网络-LeNet
人工智能·深度学习·神经网络·机器学习
dundunmm2 小时前
机器学习之scikit-learn(简称 sklearn)
python·算法·机器学习·scikit-learn·sklearn·分类算法
古希腊掌管学习的神2 小时前
[机器学习]sklearn入门指南(1)
人工智能·python·算法·机器学习·sklearn
Schwertlilien3 小时前
图像处理-Ch5-图像复原与重建
c语言·开发语言·机器学习
南七澄江4 小时前
各种网站(学习资源及其他)
开发语言·网络·python·深度学习·学习·机器学习·ai
IT古董7 小时前
【漫话机器学习系列】014.贝叶斯法则(Bayes Theorem)
人工智能·机器学习
Crossoads8 小时前
【汇编语言】端口 —— 「从端口到时间:一文了解CMOS RAM与汇编指令的交汇」
android·java·汇编·深度学习·网络协议·机器学习·汇编语言
机智的叉烧10 小时前
前沿重器[57] | sigir24:大模型推荐系统的文本ID对齐学习
人工智能·学习·机器学习