机器学习之简单数据可视化和拟合函数表达

#!/usr/bin/env python3
# _*_ coding: utf-8 _*_

import scipy as sp
import matplotlib.pyplot as plt

data = sp.genfromtxt("D:/web_traffic.tsv", delimiter="\t")#图灵官网机器学习系统设计随书下载
x = data[:,0]
y = data[:,1]

x = x[~sp.isnan(y)]
y = y[~sp.isnan(y)]

#误差分析(此处使用平方和公式)
def error(f, x, y):
    return sp.sum((f(x)-y)**2)

def draw(n):
    # 给定数据,polyfit()将数据拟合成 生成阶为n的函数,fp1表示n阶函数的参数
    fp1, residuals, rank, sv, rcond = sp.polyfit(x, y, n, full=True)

    print("Modal parameters: %s " % fp1)
    # 使用poly1d()根据fp1的参数创建一个模型函数f1
    f1 = sp.poly1d(fp1)
    error(f1, x, y)

    fx = sp.linspace(0, x[-1], 1000)#linspace 用于在指定的区间内返回间隔均匀的值linspace(start, stop, num)
    plt.plot(fx, f1(fx), linewidth=2)  # 这个函数尝试根据这些数字绘制出有意义的图形 linewidth线段宽度
    plt.legend(["d=%i" % f1.order], loc="upper left")#设置标签

draw(1)
draw(2)
draw(3)
draw(10)


plt.scatter(x, y, s=20,edgecolors="red")#使用scatter()绘制散点图 s:点的半径
plt.xlabel("web traffic over")
plt.ylabel("Time")
plt.xticks([w*7*24 for w in range(6)], ['week %i' %t for t in range(6)])#第一参数每个标记单位的x值,第二个参数标记单位名称
plt.autoscale(tight=True)
plt.grid()#生成网格
plt.show()#打开matplotlib查看器

 
  

你可能感兴趣的:(机器学习,数据可视化)