今天朋友問我說怎麼用 Python 做出一階的趨勢線還有公式,解決之後覺得為了提醒自己,順便用網誌來備份一下 code,圖大概長這樣:
code 如下:
code 如下:
#-*-coding: utf-8-*- import numpy as np import matplotlib.pyplot as plt #from sklearn.metrics import r2_score #計算相關係數用,這裡沒有用到 dataX = np.arange(100) #產出 [0,1,2....99] dataY = np.random.randint(5,100, size=100) #產出 100 個 5~100 的隨機整數 def reg(x,y): coefficients = np.polyfit(x,y,1) # 利用 polyfit 幫我們算出資料 一階擬合的 a, b 參數 p = np.poly1d(coefficients) # 做出公式, print 的結果是 coefficients[0] * X + coefficients[1] #coefficient_of_dermination = r2_score(y, p(x)) // 計算相關係數用,這裡沒有用到 return coefficients, p (arg1, arg2), text1 = reg(dataX,dataY) #arg1, arg2 用來承接 coefficients[0], coefficients[1], text1 承接 p trend_line = dataX *arg1 + arg2 #做出趨勢線矩陣 plt.plot(dataX,dataY) #放上資料圖 plt.plot(trend_line) #放上趨勢線圖 plt.text(50, 10, text1, fontsize=14) #放上趨勢線公式 plt.show() #出圖
留言
張貼留言