Python机器学习简单例子(一)附测试数据

详细解释在注解里面

#机器学习第一步,数据预处理
import numpy as np #导入库
import matplotlib.pyplot as plt
x,y = [],[] #构建数组来储存值,数据集
for sample in open("prices.txt","r"): #读取数据 sample 对应的正是一个个样本
    _x,_y = sample.split(",") #由于数据是用逗号隔开的,所以使用python中的split方法隔开
    x.append(float(_x)) #将字符串数据转化为浮点数
    y.append(float(_y))

#读取完数据后,将数据转化为npmpy数组方便进一步的处理
x,y = np.array(x),np.array(y)
#标准化 使用公式 x = (x-x.mean())/x.std()
x = (x-x.mean())/x.std()
#将原始数据以散点图的形式画出来
plt.figure()
plt.scatter(x,y,c='g',s=6) #两个维度数据的关联程度
#plt.show()

x0 = np.linspace(-2,4,100) #在(-2,4)这个区间上面取100个点作为画图的基础

#利用numpy的函数定义训练并且返回多项式回归模型的函数
#deg参数代表着模型参数中的n,即是模型中多项式的次数
#返回的模型能够根据输入的x(默认是x0),返回相对应的预测的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))

#将x轴的范围和y轴的范围限制在(-2,4),(10^5,8x10^5)
plt.xlim(-2,4)
plt.ylim(1e5,8e5)
#调用legend()方法使曲线相对应的label正确显示
plt.legend()
plt.show()

这段代码的运行效果

在这里插入图片描述
下面有一串测试数据,复制后保存为txt文件即可测试

2104,399900
1600,329900
2400,369000
1416,232000
3000,539900
1985,299900
1534,314900
1427,198999
1380,212000
1494,242500
1940,239999
2000,347000
1890,329999
4478,699900
1268,259900
2300,449900
1320,299900
1236,199900
2609,499998
3031,599000
1767,252900
1888,255000
1604,242900
1962,259900
3890,573900
1100,249900
1458,464500
2526,469000
2200,475000
2637,299900
1839,349900
1000,169900
2040,314900
3137,579900
1811,285900
1437,249900
1239,229900
2132,345000
4215,549000
2162,287000
1664,368500
2238,329900
2567,314000
1200,299000
852,179900
1852,299900
1203,239500
  • 11
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值