资源简介

Learning From Data(书本和答案以及配图)

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
Created on Thu Jun 14 16:31:48 2018

@author: Administrator
“““

# -*- coding: utf-8 -*-
import random
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams[‘font.sans-serif‘]=[‘SimHei‘] #用来正常显示中文标签
plt.rcParams[‘axes.unicode_minus‘]=False #用来正常显示负号


#定义函数GenerateData(nlowupw),生成n组数据每个分量的下界为low上界为upw为目标直线
def GenerateData(nlowupw):
    m=len(w)
    data=[]
    X1=np.array([])
    Y1=np.array([])
    X2=np.array([])
    Y2=np.array([])
    while(len(data)        x=np.array(1)
        x=np.append(xnp.random.uniform(lowupsize=m-1))
        if(x.dot(w)>=0.1):
            X1=np.append(X1x[1])
            Y1=np.append(Y1x[2])
            x=np.append(x1)
        elif(x.dot(w)<=-0.1):
            X2=np.append(X2x[1])
            Y2=np.append(Y2x[2])
            x=np.append(x-1)
        data.append(np.array(x))
    return dataX1Y1X2Y2


#定义函数Adaline(nmkw0lowupiteration=1000),n组训练数据,m组测试数据,参数为kw0为目标函数,iteration为迭代次数
#数据每个分量下界为low上界为up
def Adaline(nmkw0lowupiteration=1000):
    d=len(w0)
    #首先生成n组训练数据
    dataX1Y1X2Y2=GenerateData(nlowupw0)
    #测试数据集
    test=GenerateData(mlowupw0)[0]
    
    #定义sign函数
    def sign(x):
        if x>=0:
            return 1
        else:
            return -1
    
    #定义判别函数,判断所有数据是否分类完成
    def Judge(xw):
        flag=1
        for i in x:
            if sign(i[:d].dot(w))*i[-1]<0:
                flag=0
                break
        return flag
    
    #记录次数
    T=0
    #初始化w注意这里不能初始化为0
    w=np.ones(d)
    while(Judge(dataw)==0 and T        i=data[random.randint(0n-1)]
        s=i[:d].dot(w)
        a=s*i[-1]
        if a<=1:
            w+=k*(i[-1]-s)*i[:d]
            T+=1
    
    #计算错误率
    error=0
    #print(type(test))
    for i in test:
        if sign(i[:3].dot(w))*i[-1]<0:
            error+=1
    print(“n为“+str(k)+“时错误率为“+str(error/m))
    
    #直线方程为w0+w1*x+w2*y=0根据此生成点
    X3=np.arange(lowup0.01)
    Y3=np.array([(X3[i]*w[1]+w[0])/(-w[2]) for i in range(len(X3))])

    #目标函数
    X4=np.arange(lowup0.01)
    Y4=np.array([(X3[i]*w0[1]+w0[0])/(-w0[2]) for i in range(len(X4))])

    #画出图片
    plt.scatter(X1Y1c=‘r‘s=1)
    plt.scatter(X2Y2c=‘b‘s=1)
    plt.plot(X3Y3label=“(“+str(w[0])+“)+(“+str(w[1])+“)x+(“+str(w[2])+“)y=0“)
    plt.plot(X4Y4label=“(“+str(w0[0])+“)+(“+str(w0[1])+“)x+(“+str(w0[2])+“)y=0“)
    plt.title(u“经过“+str(T)+u“次迭代“)
    #设置坐标范围
    #plt.xticks(np.arange(010))
    #plt.yticks(np.arange(010))
    plt.legend()
    plt.show()
    
Adaline(1000100001np.array([1-1-1])01)

Adaline(1000100000.1np.array([1-1-1])01)

Adaline(1000100000.01np.array([1-1-1])01)

Adaline(1000100000.001np.array([1-1-1])01)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-12-14 16:06  Learning-from-data-master\
     文件          66  2018-12-14 16:06  Learning-from-data-master\.gitattributes
     目录           0  2018-12-14 16:06  Learning-from-data-master\Chapter1\
     文件      366073  2018-12-14 16:06  Learning-from-data-master\Chapter1\Chapter 1 The Learning Problem.ipynb
     文件     1762853  2018-12-14 16:06  Learning-from-data-master\Chapter1\Chapter 1 The Learning Problem.pdf
     文件        3113  2018-12-14 16:06  Learning-from-data-master\Chapter1\Problem 1.5 (Page 35).py
     目录           0  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\
     文件       55515  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\Chapter 1 The Learning Problem.md
     文件       10846  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_12_0.png
     文件        5320  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_27_0.png
     文件        5559  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_27_1.png
     文件        5413  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_27_2.png
     文件       13180  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_31_0.png
     文件       11861  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_44_0.png
     文件       17653  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_50_0.png
     文件       17044  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_52_0.png
     文件       23429  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_54_0.png
     文件        4778  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_58_0.png
     文件       22021  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_63_1.png
     文件       22126  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_64_1.png
     文件       21105  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_65_1.png
     文件       19508  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_66_1.png
     文件       10859  2018-12-14 16:06  Learning-from-data-master\Chapter1\md\output_75_0.png
     目录           0  2018-12-14 16:06  Learning-from-data-master\Chapter2\
     文件      427376  2018-12-14 16:06  Learning-from-data-master\Chapter2\Chapter2 Training versus Testing.ipynb
     文件     2795276  2018-12-14 16:06  Learning-from-data-master\Chapter2\Chapter2 Training versus Testing.pdf
     目录           0  2018-12-14 16:06  Learning-from-data-master\Chapter2\md\
     文件       79900  2018-12-14 16:06  Learning-from-data-master\Chapter2\md\Chapter2 Training versus Testing.md
     文件       28603  2018-12-14 16:06  Learning-from-data-master\Chapter2\md\output_105_0.png
     文件       11052  2018-12-14 16:06  Learning-from-data-master\Chapter2\md\output_130_0.png
     文件        5327  2018-12-14 16:06  Learning-from-data-master\Chapter2\md\output_21_0.png
............此处省略221个文件信息

评论

共有 条评论