无涯教程-分类算法 - 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日
    浏览(57)
  • 无涯教程-Lua - 函数声明

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

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

    此函数返回指定FILEHANDLE中读取指针的当前位置(以字节为单位)。如果省略FILEHANDLE,则它将返回上次访问的文件中的位置。 以下是此函数的简单语法- 此函数以字节为单位返回当前文件位置。 以下是显示其基本用法的示例代码,要检查此功能,请执行以下操作- 创建一个以\\\" this i

    2024年02月12日
    浏览(30)
  • 无涯教程-JavaScript - TIME函数

    TIME函数返回特定时间的十进制数。如果在输入功能之前单元格格式为\\\"常规\\\",则输出格式为日期。 TIME返回的十进制数是一个介于0(零)到0.99988426之间的值,代表从0:00:00(12:00:00 AM)到23:59:59(11:59:59 P.M.)的时间。 Argument 描述 Required/Optional Hour 从0(零)到32767的数字表示小时。 大于23的任

    2024年02月09日
    浏览(45)
  • 无涯教程-JavaScript - DELTA函数

    DELTA函数测试两个值是否相等。如果number1 = number2,则返回1;否则返回1。否则返回0。 您可以使用此功能来过滤一组值。如,通过合计几个DELTA函数,您可以计算相等对的计数。此功能也称为Kronecker Delta功能。 Argument 描述 Required/Optional number1 The first number. Required number2 第二个数字。

    2024年02月09日
    浏览(46)
  • 无涯教程-JavaScript - DB函数

    DB函数使用固定余额递减法返回指定期间内资产的折旧。 Argument 描述 Required/Optional Cost The initial cost of the asset. Required Salvage The value at the end of the depreciation (sometimes called the salvage value of the asset). Required Life The number of periods over which the asset is being depreciated (sometimes called the useful

    2024年02月09日
    浏览(46)
  • 无涯教程-Perl - splice函数

    此函数从LENGTH元素的OFFSET元素中删除ARRAY元素,如果指定,则用LIST替换删除的元素。如果省略LENGTH,则从OFFSET开始删除所有内容。 以下是此函数的简单语法- 该函数返回- 在标量context中,如果没有删除任何元素,则为undef 在标量context中删除了最后一个元素 在列表context中,失败时为空

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

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

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

    CUMIPMT函数返回start_period和end_period之间的贷款累计利息。 Argument 描述 Required/Optional Rate The interest rate. Required Nper The total number of payment periods. Required Pv The present value. Required Start_period 计算的第一个期间。 付款期从1开始编号。 Required End_period The last period in the calculation. Required T

    2024年02月09日
    浏览(89)
  • 无涯教程-Android - RadioGroup函数

    RadioGroup类用于单选按钮集。 如果我们选中属于某个单选按钮组的一个单选按钮,它将自动取消选中同一组中以前选中的任何单选按钮。 以下是与RadioGroup控制相关的重要属性。您可以查看Android官方文档以获取属性的完整列表以及可以在运行时更改这些属性的相关方法。 属性

    2024年02月10日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包