最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解如何用Python實現(xiàn)感知器算法

 更新時間:2021年06月18日 16:56:31   作者:Julyers  
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著如何用Python實現(xiàn)感知器算法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下

一、題目

在這里插入圖片描述

二、數(shù)學(xué)求解過程

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

該輪迭代分類結(jié)果全部正確,判別函數(shù)為g(x)=-2x1+1

三、感知器算法原理及步驟

在這里插入圖片描述

四、python代碼實現(xiàn)及結(jié)果

(1)由數(shù)學(xué)求解過程可知:

在這里插入圖片描述

(2)程序運行結(jié)果

在這里插入圖片描述

(3)繪圖結(jié)果

在這里插入圖片描述

'''
20210610 Julyer 感知器
'''
import numpy as np
import matplotlib.pyplot as plt

def get_zgxl(xn, a):
    '''
    獲取增廣向量
    :param x: 數(shù)組
    :param a: 1或-1
    :return:
    '''
    temp = []
    if a == 1:
        xn.append(1)
    if a == -1:
        for i in range(len(xn)):
            temp.append(xn[i]*(-1))
        temp.append(-1)
        xn = temp
    # print('xn:'+ str(np.array(x).reshape(-1, 1)))
    return np.array(xn).reshape(-1, 1)

def calculate_w(w, xn):
    '''
    已知xn和初始值,計算w
    :param w: 列向量 --> wT:行向量
    :param xn: 列向量
    :return:
    '''
    # wT = w.reshape(1, -1)  # 列向量轉(zhuǎn)變?yōu)樾邢蛄?,改變w
    wT = w.T   # 列向量轉(zhuǎn)變?yōu)樾邢蛄?,不改變w
    wTx = np.dot(wT, xn).reshape(-1)  # 行向量乘以列向量, 維度降為1。
    #wTx = wT@xn  # 行向量乘以列向量
    if wTx > 0:
        w_value = w
    else:
        w_value = np.add(w, xn)

    # print("w_update的shape" + str(w_update.shape))
    #print("wTx:" + str(wTx))
    return w_value, wTx     # w_value為列向量, wTx為一個數(shù)


def fit_one(w1, x1, x2, x3, x4):
    '''
    完成一輪迭代,遍歷一次數(shù)據(jù),更新到w5。
    :param w1: 初始值
    :param x1:
    :param x2:
    :param x3:
    :param x4:
    :return: 返回w5和wTx的列表。
    '''
    wTx_list = []
    update_w = w1

    for i in range(0, len(x_data)): #len計算樣本個數(shù),通過循環(huán)更新w
        update_w, wTx = calculate_w(update_w, x_data[i])
        wTx_list.append(wTx)

    #print(wTx_list)
    return update_w, wTx_list

def draw_plot(class1, class2, update_w):
    plt.figure()

    x_coordinate = []
    y_coordinate = []
    for i in range(len(class1)):
        x_coordinate.append(class1[i][0])
        y_coordinate.append(class1[i][1])
    plt.scatter(x_coordinate, y_coordinate, color='orange', label='class1')

    x_coordinate = []
    y_coordinate = []
    for i in range(len(class2)):
        x_coordinate.append(class2[i][0])
        y_coordinate.append(class2[i][1])
    plt.scatter(x_coordinate, y_coordinate, color='green', label='class2')

    w_reshape = update_w.reshape(-1)
    #print

    x = np.linspace(0, 2, 5)
    if w_reshape[1] == 0:
        plt.axvline(x = (-1) * w_reshape[2]/w_reshape[0])
    else:
        plt.plot(x, (x*w_reshape[0]*(-1) + w_reshape[2]*(-1))/w_reshape[1])

    plt.title('result of perception')
    plt.xlabel('x1')
    plt.ylabel('x2')
    plt.legend()
    plt.show()

if __name__ == '__main__':
    x1 = [0, 0]
    x2 = [0, 1]
    x3 = [1, 0]
    x4 = [1, 1]
    class1 = [x1, x2]
    class2 = [x3, x4]

    x1 = get_zgxl(x1, 1)
    x2 = get_zgxl(x2, 1)
    x3 = get_zgxl(x3, -1)
    x4 = get_zgxl(x4, -1)
    x_data = [x1, x2, x3, x4]
    # print(x_data)

    w1 = np.zeros((3, 1))  # 初始值w1為列向量
    #print('w1:' + str(w1) + '\n')

    update_w = w1
    update_w, wTx_list = fit_one(update_w, x1, x2, x3, x4)

    count = 0
    iter_number = 0

    for wTx in wTx_list:
        if wTx > 0:
            count += 1
        if count < 4:
            update_w, wTx_list = fit_one(update_w, x1, x2, x3, x4)
            iter_number += 1
        else:
            break

    print('迭代次數(shù)為:' + str(iter_number))
    print('迭代終止時的w:'+'\n' + str(update_w))
    #print(wTx_list)
    draw_plot(class1, class2, update_w)

到此這篇關(guān)于詳解如何用Python實現(xiàn)感知器算法的文章就介紹到這了,更多相關(guān)Python實現(xiàn)感知器算法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python?中的jieba分詞庫

    python?中的jieba分詞庫

    這篇文章主要介紹了python中的jieba分詞庫,jieba?庫是優(yōu)秀的中文分詞第三方庫,中文文本需要通過分詞獲得單個的詞語,下面文章的的詳細內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 學(xué)Python 3的理由和必要性

    學(xué)Python 3的理由和必要性

    在本篇文章里小編給大家整理的是關(guān)于學(xué)Python 3的理由的優(yōu)勢,有興趣的朋友們跟著學(xué)習(xí)參考下。
    2019-11-11
  • Elasticsearch映射字段數(shù)據(jù)類型及管理

    Elasticsearch映射字段數(shù)據(jù)類型及管理

    這篇文章主要介紹了Elasticsearch映射字段數(shù)據(jù)類型及管理的講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • 分享五個超實用Python腳本,減少垃圾軟件負擔(dān)

    分享五個超實用Python腳本,減少垃圾軟件負擔(dān)

    今天給大家?guī)韼讉€實用的python腳本工具,可以實現(xiàn)系統(tǒng)提示工具、文件夾清理工具等,這樣就再也不用擔(dān)心女朋友在電腦里安裝垃圾軟件啦
    2022-05-05
  • python os.rename實例用法詳解

    python os.rename實例用法詳解

    在本篇文章里小編給大家整理的是一篇關(guān)于python os.rename實例用法詳解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python?Pandas多種添加行列數(shù)據(jù)方法總結(jié)

    Python?Pandas多種添加行列數(shù)據(jù)方法總結(jié)

    在進行數(shù)據(jù)分析時經(jīng)常需要按照一定條件創(chuàng)建新的數(shù)據(jù)列,然后進行進一步分析,下面這篇文章主要給大家介紹了關(guān)于Python?Pandas多種添加行列數(shù)據(jù)方法的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Python基礎(chǔ)之注釋的用法

    Python基礎(chǔ)之注釋的用法

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著Python注釋的用法展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • Python中使用asyncio 封裝文件讀寫

    Python中使用asyncio 封裝文件讀寫

    本文主要給大家簡單講解如何用 asyncio.Future 對象來封裝文件的異步讀寫。有需要的小伙伴可以參考下
    2016-09-09
  • 在PyCharm中接入deepseek的API的各種方法

    在PyCharm中接入deepseek的API的各種方法

    本文詳細介紹了在PyCharm中接入DeepSeek API的步驟,包括獲取API密鑰、安裝庫、編寫代碼、運行和調(diào)試、處理響應(yīng)以及可選的封裝為函數(shù)或類,此外,還提供了替代的調(diào)用方法,感興趣的小伙伴跟著小編一起來看看吧
    2025-02-02
  • django 微信網(wǎng)頁授權(quán)認證api的步驟詳解

    django 微信網(wǎng)頁授權(quán)認證api的步驟詳解

    這篇文章主要介紹了django 微信網(wǎng)頁授權(quán)認證api的步驟詳解,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07

最新評論

竹山县| 唐海县| 建平县| 仁怀市| 沭阳县| 广安市| 昌黎县| 塘沽区| 宁海县| 盐津县| 迁安市| 平乡县| 香河县| 昌黎县| 大竹县| 太康县| 全椒县| 沾化县| 荆州市| 齐齐哈尔市| 伊川县| 宁德市| 南汇区| 安西县| 随州市| 潮安县| 桐庐县| 珲春市| 贵南县| 彝良县| 郑州市| 香港| 永靖县| 涞水县| 鲁甸县| 仁化县| 象山县| 革吉县| 鱼台县| 长治县| 东山县|