机器学习 numpy.polyfit & poly1d拟合数据

Numpy的用法很广,高级功能包括多项式求解以及多项式拟合的功能。今天就来理一理。

import numpy as np
p=np.poly1d([1,-4,3]) # 二阶多项式的系数
print('x=0多项式的值是',p(0))
print('p的根',p.roots)

p=np.poly1d([1,-4,3]) 相当于数学里的p=x²-4x+3。
numpy 提供的 np.polyfit()函 数可 以用 多项式对数据进行拟合。在下面例子中,我们生成 30个在平方根曲线周围引入随机噪声的点,用一个三阶多项式来拟合这些点。

import matplotlib.pyplot as plt 
import numpy as np 
dots=30 
order=3 
x=np.linspace(0,1,dots) 
y=np.sqrt(x)+0.2*np.random.rand(dots) 
p=np.poly1d(np.polyfit(x,y,order)) 
t=np.linspace(0,1,200)
plt.plot(x,y,'ro',t,p(t))

在这里插入图片描述
拟合双月

import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
# 准备数据
X,y=make_moons(n_samples=1000,noise=0.2) # 添加噪声0.2
X1=X[y==0]
X2=X[y==1]
# 图一
plt.figure(figsize=(8,8))
plt.scatter(X1[:,0],X1[:,1],c='b',s=12)
plt.scatter(X2[:,0],X2[:,1],c='r',s=12)

# 图二
plt.figure(figsize=(8,8))
t1=np.polyfit(X1[:,0],X1[:,1],deg=3)
p1=np.poly1d(t1)
x1=np.linspace(X1[:,0].min(),X1[:,0].max(),100)
pp1=p1(x1)
plt.scatter(X1[:,0],X1[:,1],color='b',s=12)
plt.plot(x1,pp1,color='r')

# 图三
plt.figure(figsize=(8,8))
t2=np.polyfit(X2[:,0],X2[:,1],deg=3)
p2=np.poly1d(t2)
x2=np.linspace(X2[:,0].min(),X2[:,0].max(),100)
pp2=p2(x2)
plt.scatter(X2[:,0],X2[:,1],color='r',s=12)
plt.plot(x2,pp2,color='b')

图一
图一
图二
图二
图三
图三

重要代码

t1 = np.polyfit(X1[:,0],X1[:,1],deg=3) np.polyfit制定拟合函数deg多项式项数
p1=np.poly1d(t1) np.poly1d拟合
x1=np.linspace(X1[:,0].min(),X1[:,0].max(),100)
pp1=p1(x1)
plt.plot(x1,pp1,color=‘r’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值