2次元データに3直線で回帰分析を行いたいと考えています。
その際に推定した直線同士の端部が交わるようにしたいです。
python3でプログラムを書いてみましたが、端部が交わるようなプログラムが書けず困っています。
実現したいイメージの図は添付のような感じです。
初歩的な質問で申し訳ございませんが、ご存知の方がおられましたらご教示いただけますと幸いです。
参考までにうまくいっていないプログラムを載せておきます。
#3直線回帰 x=np.array(data[0], dtype=float) y=np.array(data[1], dtype=float) n = x.shape[0] for i in range(2, n-4): seg1_x = x[0:i+1] seg1_y = y[0:i+1] coef1, residuals1, rank1, singular_values1, th1 = np.polyfit(seg1_x, seg1_y,1, full=True) for j in range (i+2, n-2): seg2_x = x[i:j+1] seg2_y = y[i:j+1] seg3_x = x[j:n] seg3_y = y[j:n] coef2, residuals2, rank2, singular_values2, th2 = np.polyfit(seg2_x, seg2_y,1, full=True) coef3, residuals3, rank3, singular_values3, th3 = np.polyfit(seg3_x, seg3_y,1, full=True)
> 端部が交わるような
その絵を見た感じ,{真ん中の線分の両端点の座標と,2つの外側の線の向き}という6自由度で表現すれば良いように思います.
(「端部が交わる」形の物をモデルとして用いればいいよね,っていう)
#pythonで実装をどう書くのかについては全く知りませんが.
>2次元データに3直線で回帰分析を行いたいと考えています。
学習が目的でなく、掲載の通り回帰分析したいが目標であれば、自力実装よりすでにあるscikit-learnの回帰モデルに乗っかる方が楽チンです。車輪の再発明を避ける(ラクができてバグも少ない)というやつです。
検討ください。
あなたの回答
tips
プレビュー