Python 线性分类器

原理:感知机(perceptron)是二类分类的线性分类模型,它的思想很简单,就是在一个二维空间中寻找一条直线将红点和蓝点分开。

线性分类器:机器学习领域,分类的目标是指将具有相似特征的对象聚集。而一个线性分类器则透过特征的线性组合来做出分类决定,以达到此种目的。对象的特征通常被描述为特征值,而在向量中则描述为特征向量。

# -*- coding:utf-8 -*-

import random

def matrix_time(x=None,y=None):
    sum=0
    for i in range(0,len(x)):
        sum+=(x[i]*y[i])
    print("    α* "+str(y)+"="+str(sum))
    return sum
def matrix_add(x=None,y=None):
    result=[]
    for i in range(0,len(x)):
        result.append(x[i]+y[i])

    return result
def is_pass_muster(stander=None,data=None):
    k=0
    print("   检验α是否能识别全部样本")
    for list in data:
        m=matrix_time(stander,list)
        if(m<=0):
            print("   α*"+str(list)+'='+str(m)+'<=0,未能识别全部全部样本,开始对α进行调整')
            return False
        if (m>0):
            print("   α*" + str(list) + '=' + str(m) + '>0,正确识别样本')
            k+=1
    if k==len(data):

        return True
def fun(x=None):
    a=[]
    while len(a)!=3:
        k= random.randint(-9,9)
        if k not in a:
            a.append(k)
    #a=[-2,0,-1]
    print("初始化α:"+str(a))
    list =[]
    w=1
    for l in x:
        for omiga in l:
            for i in range(0,len(omiga)):
                omiga[i]*=w
            omiga.append(w)
            list.append(omiga)
        w*=-1
    n=1
    print("第" + str(n) + "轮:")
    while not is_pass_muster(stander=a,data=list):
        n += 1
        print("第"+str(n)+"轮:")
        for lt in list:
            m=matrix_time(a,lt)
            if(m<=0):
                bb=a
                a=matrix_add(a,lt)
                print("    未正确识别样本,将α:"+str(bb)+"调整为:"+str(bb)+"+"+str(lt)+'='+str(a))
    return a

if __name__ == '__main__':

    x=[[[0,0],[0,1]],[[1,0],[1,1]]]
    print('输入数据:'+str(x))
    a=fun(x)
    print('α全部识别样本:'+str(a))

 结果:

Python 线性分类器_第1张图片

Python 线性分类器_第2张图片

 Python 线性分类器_第3张图片

作者:WangB

 

你可能感兴趣的:(智能钻完井,Python在石油工程中应用,油田大数据)