转自:https://blog.csdn.net/u010626937/article/details/72896144#commentBox

1.Python的机器学习包sklearn中也包含了感知机学习算法,我们可以直接调用,因为感知机算法属于线性模型,所以从sklearn.linear_model中import下面给出例子。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Perceptron #创建数据,直接定义数据列表
def creatdata1():
samples=np.array([[3,-3],[4,-3],[1,1],[1,2]])
labels=np.array([-1,-1,1,1])
return samples,labels def MyPerceptron(samples,labels):
#定义感知机
clf=Perceptron(fit_intercept=True,n_iter=30,shuffle=False)
#训练感知机
clf.fit(samples,labels)
#得到权重矩阵
weigths=clf.coef_ #得到截距bisa
bias=clf.intercept_ return weigths,bias #画图描绘
class Picture:
def __init__(self,data,w,b):
self.b=b
self.w=w
plt.figure(1)
plt.title('Perceptron Learning Algorithm',size=14)
plt.xlabel('x0-axis',size=14)
plt.ylabel('x1-axis',size=14) xData=np.linspace(0,5,100)
yData=self.expression(xData)
plt.plot(xData,yData,color='r',label='sample data') plt.scatter(data[0][0],data[0][1],s=50)
plt.scatter(data[1][0],data[1][1],s=50)
plt.scatter(data[2][0],data[2][1],s=50,marker='x')
plt.scatter(data[3][0],data[3][1],s=50,marker='x')
plt.savefig('3d.png',dpi=75) def expression(self,x):
y=(-self.b-self.w[:,0]*x)/self.w[:,1]
return y def Show(self):
plt.show() if __name__ == '__main__':
samples,labels=creatdata1()
weights,bias=MyPerceptron(samples,labels)
print ('最终训练得到的w和b为:',weights,',',bias)
Picture=Picture(samples,weights,bias)
Picture.Show()

其中:

Perceptron

fit_intercept : bool
Whether the intercept should be estimated or not. If False, the
data is assumed to be already centered. Defaults to True.
#是否应该估计截距,如果是False则认为数据是被中心化过的(减去过均值)。默认是True
#也就是说如果是False,则b=0 shuffle : bool, optional, default True
Whether or not the training data should be shuffled after each epoch.
#一个epoch应该是对所有的数据处理一遍
#每次处理之后是否打乱原有数据的顺序 n_iter : int, optional
The number of passes over the training data (aka epochs).
Defaults to None. Deprecated, will be removed in 0.21. .. versionchanged:: 0.19
Deprecated
#这个真是不太明白是什么意思。

运行结果:

最终训练得到的w和b为: [[-2.  4.]] , [0.]
DeprecationWarning: n_iter parameter is deprecated in 0.19 and will be removed
in 0.21. Use max_iter and tol instead. DeprecationWarning)

调用sklearn包中的PLA算法[转载]的更多相关文章

  1. Python调用jar包中的方法

    [本文出自天外归云的博客园] 需求 最近在后台项目代码中一段自定义的AES加解密的程序在平时的测试工作中应用频繁.因为写脚本经常会需要使用,而经过各种尝试,比如jpype等,都不尽如人意.最后转换思路 ...

  2. 调用BPL包中的函数

    BPL就是一种DLL,DLL的EXPORTS和GETPROCADDRESS()在BPL中一样好使. 要调用BPL中的方法也和调用DLL的一样.代码略.

  3. python 一个包中的文件调用另外一个包文件 实例

    python不同文件夹中模块的引用调用顺序,被调用的模块中①有类的 模块.类().方法()   ②无类的:模块.方法() test包中testIm.py 调用 test1包中testIm1.py中的方 ...

  4. 如何制作Jar包并在android中调用jar包

    android制作jar包: 新建android工程,然后右击,点击导出,选择导出类型为Java下的JAR file,在java file specification 中不要选择androidmani ...

  5. 调用WEKA包进行kmeans聚类(java)

    所用数据文件:data1.txt @RELATION data1 @ATTRIBUTE one REAL @ATTRIBUTE two REAL @DATA 0.184000 0.482000 0.1 ...

  6. Web项目替换jar包中的文件的方法

    经常遇到这样的问题,需要修改jar包中的方法.应该如何做? 1.有些很人性化的框架jar包,比如SpringSecurity,可以修改配置文件指定一个新建的类,让类实现Jar包中的对应的接口就好了. ...

  7. [Java基础] 深入jar包:从jar包中读取资源文件

    转载: http://hxraid.iteye.com/blog/483115?page=3#comments 我们常常在代码中读取一些资源文件(比如图片,音乐,文本等等).在单独运行的时候这些简单的 ...

  8. 读取Jar包中的资源问题探究

    最近在写一个可执行jar的程序,程序中包含了2个资源包,一个是images,一个是files.问题来了,在Eclipse里开发的时候,当用File类来获取files下面的文件时,没有任何问题.但是当程 ...

  9. java 从jar包中读取资源文件

    在代码中读取一些资源文件(比如图片,音乐,文本等等),在集成环境(Eclipse)中运行的时候没有问题.但当打包成一个可执行的jar包(将资源文件一并打包)以后,这些资源文件找不到,如下代码: Jav ...

随机推荐

  1. 【JSON.NET】json序列化小驼峰格式(属性名首字母小写)

    废话少说,先上代码 var setting = new JsonSerializerSettings { ContractResolver = new Newtonsoft.Json.Serializ ...

  2. 安装与使用 Trac 来管理项目

    1 概要 以 Windows 平台为例,讲述一下有关 Trac 的基本配置与使用,同时分享一下有关 Trac 的项目管理经验. 2 安装 Trac 前的准备工作   2.1 准备工作 安装 Pytho ...

  3. Esper学习之九:EPL语法(五)

    本篇的内容主要包括了Subquery(也就是子查询)和Join,内容不少,但是不难,基本上和sql差不太多. 1.Subquery EPL里的Subquery和sql的类似,是否比sql的用法更多我不 ...

  4. android 线程间的通信

    (转自:http://www.cnblogs.com/allin/archive/2010/05/19/1738800.html) andriod提供了 Handler 和 Looper 来满足线程间 ...

  5. linux下 php 安装mysql的扩展模块

    1.安装mysql-devel包 [root@DBproxy ~]# yum install mysql-devel 注:该包必须在编译php之前安装好,否则在安装php的mysql扩展模块是会碰到各 ...

  6. create-react-app项目中的eslint

    "no-multi-spaces": 1, //禁止多个空格 "jsx-quotes": 1, //此规则强制在JSX属性中一致使用双引号或单引号 " ...

  7. docker参数--restart=always的作用

    创建容器时没有添加参数  --restart=always ,导致的后果是:当 Docker 重启时,容器未能自动启动. 现在要添加该参数怎么办呢,方法有二: 1.Docker 命令修改 docker ...

  8. layerui如何隐藏按钮?

    https://www.layui.com/doc/modules/layer.html#btn 建议把 btn: ['取消'],btnAlign: 'c',yes: function (index) ...

  9. 浅谈 Java 字符串(String, StringBuffer, StringBuilder)

    我们先要记住三者的特征: String 字符串常量 StringBuffer 字符串变量(线程安全) StringBuilder 字符串变量(非线程安全) 一.定义 查看 API 会发现,String ...

  10. ggplot2绘制概率密度图

    以下绘图以Weibull分布(韦伯分布.威布尔分布)为例 关于Weibull分布(韦伯分布.威布尔分布),请参考本人博客http://www.cnblogs.com/wwxbi/p/6141501.h ...