どうやって同時に複数の直線あてはめ?
解決したいこと
平面上のデータ点は一つ直線$y=ax+b$を当てはめる場合、簡単にフィッティングできる。しかし、そのデータ点は違う直線に属する場合は、どのような方法が適性だか?
仮定に直線の数Nは $1<N<10$。且つ、データのノイズは小さい。
該当するソースコード:
import matplotlib.pyplot as plt
import numpy as np
np.random.seed(42)
def generate_lines(x):
line1=0.2*x
line2=1.5*x
line3=-1*x+1
return [line1,line2,line3]
def generate_points(lines):
points=[]
for line in lines:
n=len(line)
points.append(line+0.1*np.random.rand(n))
return points
def plt_points_lines(x,lines,points):
for line in lines:
plt.plot(x,line,'-',color=(0,0,1))
for point in points:
plt.plot(x,point,'o',color=(1,0,0))
plt.show()
if __name__=='__main__':
n=20
x=np.linspace(0,1,n)
lines=generate_lines(x)
points=generate_points(lines)
plt_points_lines(x, lines,points)
0