无涯教程-分类算法 - Python实现函数

这篇具有很好参考价值的文章主要介绍了无涯教程-分类算法 - Python实现函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为了在Python中实现SVM,无涯教程将从标准库导入开始,如下所示-

import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
import seaborn as sns; sns.set()

接下来,从sklearn.dataset.sample_generator创建具有线性可分离数据的样本数据集,以使用SVM进行分类-

from sklearn.datasets.samples_generator import make_blobs
X, y=make_blobs(n_samples=100, centers=2, random_state=0, cluster_std=0.50)
plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=summer);

以下是生成具有100个样本和2个聚类的样本数据集后的输出-

知道SVM支持判别分类。它通过在二维的情况下简单地找到一条线,在多维的情况下通过歧管来简单地将类彼此划分。它在上述数据集上实现如下-

xfit = np.linspace(-1, 3.5)
plt.scatter(X[:, 0], X[:, 1], c = y, s = 50, cmap = summer)
plt.plot([0.6], [2.1], x, color = black, markeredgewidth = 4, markersize = 12)
for m, b in [(1, 0.65), (0.5, 1.6), (-0.2, 2.9)]:
plt.plot(xfit, m * xfit + b, -k)
plt.xlim(-1, 3.5);

输出如下-

从上面的输出中可以看到,有三种不同的分隔符可以完美地区分以上示例。

正如讨论的那样,SVM的主要目标是将数据集划分为类,以找到最大的边际超平面(MMH),而不是在类之间绘制零线,可以在每条线周围画出一定宽度的边界,直到最近的点。它可以做到如下-

xfit = np.linspace(-1, 3.5)
plt.scatter(X[:, 0], X[:, 1], c = y, s = 50, cmap = summer)

for m, b, d in [(1, 0.65, 0.33), (0.5, 1.6, 0.55), (-0.2, 2.9, 0.2)]:
   yfit = m * xfit + b
   plt.plot(xfit, yfit, -k)
   plt.fill_between(xfit, yfit - d, yfit + d, edgecolor=none,
   color = #AAAAAA, alpha = 0.4)
plt.xlim(-1, 3.5);

从上面的输出图像中,无涯教程可以轻松地观察到判别式分类器中的"边距", SVM将选择使边距最大化的线。

接下来,将使用Scikit-Learn的支持向量分类器在此数据上训练SVM模型。在这里,使用线性内核来拟合SVM,如下所示:

from sklearn.svm import SVC # "Support vector classifier"
model = SVC(kernel = linear, C = 1E10)
model.fit(X, y)

输出如下-

SVC(C=10000000000.0, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape=ovr, degree=3, gamma=auto_deprecated,
kernel=linear, max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)

现在,为了更好地理解,以下内容将绘制2D SVC的决策函数-

def decision_function(model, ax = None, plot_support = True):
   if ax is None:
      ax = plt.gca()
   xlim = ax.get_xlim()
   ylim = ax.get_ylim()

为了判断模型,需要创建网格,如下所示:

x = np.linspace(xlim[0], xlim[1], 30)
y = np.linspace(ylim[0], ylim[1], 30)
Y, X = np.meshgrid(y, x)
xy = np.vstack([X.ravel(), Y.ravel()]).T
P = model.decision_function(xy).reshape(X.shape)

接下来,需要绘制决策边界和边际,如下所示:

ax.contour(X, Y, P, colors=k, levels=[-1, 0, 1], alpha=0.5, linestyles=[--, -, --])

现在,类似地绘制支持向量,如下所示:

if plot_support:
   ax.scatter(model.support_vectors_[:, 0],
   model.support_vectors_[:, 1], s=300, linewidth=1, facecolors=none);
ax.set_xlim(xlim)
ax.set_ylim(ylim)

现在,使用此功能来拟合无涯教程的模型,如下所示:

plt.scatter(X[:, 0], X[:, 1], c=y, s=50, cmap=summer)
decision_function(model);

无涯教程可以从上面的输出中观察到SVM分类器适合数据的边距,即虚线和支持向量,该适合度的关键元素与虚线接触。这些支持向量点存储在分类器的 support_vectors _属性中,如下所示-

model.support_vectors_

输出如下-

array([[0.5323772 , 3.31338909], [2.11114739, 3.57660449], [1.46870582, 1.86947425]])

分类算法 中的 Python实现函数 - 无涯教程网无涯教程网提供为了在Python中实现SVM,无涯教程将从标准库导入开始,如下所示- import numpy as np...https://www.learnfk.com/python-machine-learning/machine-learning-with-python-implementing-svm-in-python.html文章来源地址https://www.toymoban.com/news/detail-687891.html

到了这里,关于无涯教程-分类算法 - Python实现函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 无涯教程-分类算法 - 朴素贝叶斯

    朴素贝叶斯算法是一种基于应用贝叶斯定理的分类技术,其中强烈假设所有预测变量彼​​此独立。简而言之,假设是某个类中某个要素的存在独立于同一类中其他任何要素的存在。 在贝叶斯分类中,主要的兴趣是找到后验概率,即给定某些观察到的特征的标签的概率。借助

    2024年02月11日
    浏览(54)
  • 无涯教程-Lua - 函数声明

    函数是一起执行任务的一组语句,您可以将代码分成单独的函数。 Lua语言提供了程序可以调用的许多内置方法。如方法 print() 打印在控制台中作为输入传递的参数。 Lua编程语言中方法定义的一般形式如下- Lua编程语言中的方法定义由方法标头和方法主体组成。这是方法的所有

    2024年02月14日
    浏览(39)
  • 无涯教程-Perl - use函数

    此函数将MODULE导出的所有功能(或仅LIST引用的功能)导入当前包的名称空间。有效等效于- 也用于在当前脚本上强加编译器指令(编译指示),尽管从本质上讲它们只是模块。 请注意,use语句在编译时进行判断。在执行时判断require语句。 如果VERSION参数存在于Module和LIST之间,则使用将

    2024年02月12日
    浏览(32)
  • 无涯教程-Perl - chdir函数

    此功能将当前工作目录更改为EXPR,如果未指定,则更改为用户的主目录。此函数调用等效于Unix命令 cd EXPR 。 以下是此函数的简单语法- 如果失败,此函数返回0,如果成功,则返回1。 以下是显示其基本用法的示例代码,假设您在/user/home/learnfk目录中工作- Perl 中的 chdir函数 - 无涯教程

    2024年02月14日
    浏览(34)
  • 无涯教程-Perl - sethostent函数

    该函数应在首次调用gethostent之前调用。 STAYOPEN参数是可选的,在大多数系统上未使用。 当gethostent()检索主机数据库中下一行的信息时,然后sethostent设置(或重置)枚举到主机条目集的开头。 以下是此函数的简单语法- 此函数不返回任何值。 以下是显示其基本用法的示例代码- 执行

    2024年02月12日
    浏览(38)
  • 无涯教程-Perl - endhostent函数

    此函数告诉系统您不再希望使用gethostent从hosts文件读取条目。 以下是此函数的简单语法- 此函数不返回任何值。 以下是显示其基本用法的示例代码- 执行上述代码后,将产生以下输出- Perl 中的 endhostent函数 - 无涯教程网 无涯教程网提供描述此函数告诉系统您不再希望使用geth

    2024年02月13日
    浏览(35)
  • 无涯教程-Perl - sprintf函数

    此函数使用FORMAT基于LIST中的值返回格式化的字符串。本质上与printf相同,但是返回格式化的字符串而不是将其打印。 以下是此函数的简单语法- 此函数返回SCALAR(格式化的文本字符串)。 以下是显示其基本用法的示例代码- 执行上述代码后,将产生以下输出- Perl 中的 sprintf函数

    2024年02月12日
    浏览(38)
  • 无涯教程-Perl - exit函数

    该函数判断EXPR,退出Perl解释器,并返回该值作为退出值。始终在退出之前运行脚本(和导入的程序包)中定义的所有END {}块。如果省略EXPR,则解释器以0值退出。不应用于退出子例程;否则,解释器将退出子例程。使用eval而死或使用return。 以下是此函数的简单语法- 此函数不返回任

    2024年02月13日
    浏览(39)
  • 无涯教程-Perl - bless函数

    此函数告诉REF引用的实体,它现在是CLASSNAME包中的对象,如果省略CLASSNAME,则为当前包中的对象。建议使用bless的两个参数形式。 以下是此函数的简单语法- 该函数返回对祝福到CLASSNAME中的对象的引用。 以下是显示其基本用法的示例代码,通过祝福对包类的引用来创建对象引用-

    2024年02月13日
    浏览(39)
  • 无涯教程-Perl - unshift函数

    此函数按顺序将LIST中的元素放在ARRAY的开头。这与shift()相反。 以下是此函数的简单语法- 此函数返回ARRAY中新元素的数量。 以下是显示其基本用法的示例代码- 执行上述代码后,将产生以下输出- Perl 中的 unshift函数 - 无涯教程网 无涯教程网提供描述此函数按顺序将LIST中的元素

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包