机器学习(numpy)练习一

程序员还是要学数学

# 导入需要用到的库
import numpy as np 
import matplotlib.pyplot as plt 



# 定义存储输入数据( x )和目标数据( y )的数组
x, y = [], []

# 遍历数据集,变量sample 对应的正是一个个样本
for sample in open("D:\machinellearning\MachineLearning-master\MachineLearning-master\_Data\prices.txt", "r"):
    # 由于数据是用逗号隔开的,所以调用Python 中的split 方法并将逗号作为参数传入
    xx, yy = sample.split(",")
    # 将字符串数据转化为浮点数
    x.append(float(xx))
    y.append(float(yy))
    
# 读取完数据后,将它们转化为Numpy 数组以方便进一步的处理    
x, y = np.array(x), np.array(y)
# 标准化
x = (x - x.mean()) / x.std()
# 将原始数据以散点爵的形式画出
plt.figure()
plt.scatter(x, y, c="g", s=20)
plt.show()

# 在(- 2,4)这个区间上取100 个点作为画图的基础
x0 = np.linspace(-2, 4, 100)
# 利用Numpy 的函数定义训练并返回多项式回归模型的函数
# deg 参数代表着模型参数中的n ,亦即模型中多项式的次数
# 返回的模型能够根据输入的x (默认是xO ),返回相对应的预测的y

def get_model(deg):
    return lambda input_x=x0: np.polyval(np.polyfit(x,y,deg), input_x)


# 根据参数n 、输入的x 、y 返回相对应的损失
def get_cost(deg, input_x, input_y):
    return 0.5 * ((get_model(deg)(input_x) - input_y) ** 2).sum()

# 定义测试参数集并根据它进行各种实验

test_set = (1, 4, 10)

for d in test_set:
    # 输出相应的损失
    print(get_cost(d, x, y))
    
    # 画出相应的图像
plt.scatter(x, y, c="g", s=20)



for d in test_set:
    plt.plot(x0, get_model(d)(), label="degree = {}".format(d))
    
    # 将横轴、纵轴的范围分别限制在(- 2 均、( 105, 8 x 105)
plt.xlim(-2, 4)
plt.ylim(1e5, 8e5)

# 调用legend 方法使曲线对应的label 正确显示
plt.legend()
plt.show()

96732238800.35292

94112406641.67741

75874846680.09283

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值