机器学习之用Python使用sklearn所提供的线性支持向量机(LinearSVC)方法对其进行分类,求取一个支持向量集并绘图

向量机

首先创建可以分离的样本数据集(假定二分类),然后使用sklearn所提供的线性支持向量机(LinearSVC)方法对其进行分类,求取一个支持向量集并绘图

import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import LinearSVC
from sklearn.datasets import make_blobs

# 创建随机分布的,可以分离的400个样本点
X, y = make_blobs(n_samples=400, centers=2, random_state=32)
# 创建LinearSVC对象
clf = LinearSVC(C=1000)
clf.fit(X, y)
plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired)
# 画出决策函数
ax = plt.gca()
xlim = ax.get_xlim()
ylim = ax.get_ylim()

# 网格化评价模型
xx = np.linspace(xlim[0], xlim[1], 30)
yy = np.linspace(ylim[0], ylim[1], 30)
YY, XX = np.meshgrid(yy, xx)
xy = np.vstack([XX.ravel(), YY.ravel()]).T
Z = clf.decision_function(xy).reshape(XX.shape)
# 画分类边界
ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5,
           linestyles=['--', '-', '--'])
plt.title("Maximum margin using LinearSVC")
plt.show()

在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是用Fisher线性判别和支持向量机进行Oxford17Flower数据分类的代码示例: 首先,我们需要加载Oxford17Flower数据,这里我们使用sklearn中的datasets库: ```python from sklearn.datasets import load_sample_images from sklearn.model_selection import train_test_split # 加载Oxford17Flower数据 data = load_sample_images() X = data.images y = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1] # 将数据分成训练和测试 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 接下来,我们使用Fisher线性判别对数据进行分类: ```python from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.metrics import accuracy_score # 使用Fisher线性判别进行分类 lda = LinearDiscriminantAnalysis() X_train_lda = lda.fit_transform(X_train.reshape(len(X_train), -1), y_train) X_test_lda = lda.transform(X_test.reshape(len(X_test), -1)) clf_lda = SVC(kernel='linear') clf_lda.fit(X_train_lda, y_train) # 计算分类准确率 y_pred_lda = clf_lda.predict(X_test_lda) acc_lda = accuracy_score(y_test, y_pred_lda) print("Fisher Linear Discriminant Accuracy: {:.2f}%".format(acc_lda*100)) ``` 最后,我们使用支持向量机对数据进行分类: ```python from sklearn.svm import SVC # 使用支持向量机进行分类 clf_svm = SVC(kernel='rbf') clf_svm.fit(X_train.reshape(len(X_train), -1), y_train) # 计算分类准确率 y_pred_svm = clf_svm.predict(X_test.reshape(len(X_test), -1)) acc_svm = accuracy_score(y_test, y_pred_svm) print("SVM Accuracy: {:.2f}%".format(acc_svm*100)) ``` 完整代码如下: ```python from sklearn.datasets import load_sample_images from sklearn.model_selection import train_test_split from sklearn.discriminant_analysis import LinearDiscriminantAnalysis from sklearn.svm import SVC from sklearn.metrics import accuracy_score # 加载Oxford17Flower数据 data = load_sample_images() X = data.images y = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1] # 将数据分成训练和测试 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 使用Fisher线性判别进行分类 lda = LinearDiscriminantAnalysis() X_train_lda = lda.fit_transform(X_train.reshape(len(X_train), -1), y_train) X_test_lda = lda.transform(X_test.reshape(len(X_test), -1)) clf_lda = SVC(kernel='linear') clf_lda.fit(X_train_lda, y_train) # 计算分类准确率 y_pred_lda = clf_lda.predict(X_test_lda) acc_lda = accuracy_score(y_test, y_pred_lda) print("Fisher Linear Discriminant Accuracy: {:.2f}%".format(acc_lda*100)) # 使用支持向量机进行分类 clf_svm = SVC(kernel='rbf') clf_svm.fit(X_train.reshape(len(X_train), -1), y_train) # 计算分类准确率 y_pred_svm = clf_svm.predict(X_test.reshape(len(X_test), -1)) acc_svm = accuracy_score(y_test, y_pred_svm) print("SVM Accuracy: {:.2f}%".format(acc_svm*100)) ``` 这样,我们就完成了用Fisher线性判别和支持向量机这两种机器学习算法对Oxford17Flower数据实现植物分类的任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南蓬幽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值