【測繪程式設計試題集】 試題03 利用線性迴歸模型進行衛星軌道的預報
資料
300,21182.88,-7044.56,14639.48
600,21707.87,-6930.28,13906.68
900,22207.04,-6828.65,13147.66
1200,22679.16,-6738.66,12363.84
1500,23123.06,-6659.23,11556.71
1800,23537.69,-6589.21,10727.78
2100,23922.07,-6527.40,9878.61
2400,24275.33,-6472.54,9010.81
2700,24596.67,-6423.32,8126.00
3000,24885.42,-6378.40,7225.86
3300,25141.01,-6336.41,6312.08
3600,25362.96,-6295.93,5386.38
3900,25550.92,-6255.54,4450.51
問題
解
def read_m(path):
# 所有資料
m = []
# x
xlist = []
# y
ylist = []
# z
zlist = []
# time
time_list = []
with open(path, 'r') as f:
for i in f.readlines():
aa = i.replace('\n', '').split(",")
bb = [eval(a) for a in aa]
m.append(bb)
time_list.append(bb[0])
xlist.append(bb[1])
ylist.append(bb[2])
zlist.append(bb[3])
return {
"alldata": m,
"time": time_list,
"x": xlist,
"y": ylist,
"z": zlist,
}
XXX = None
YYY = None
def xpj():
"""
X平均值
:return:
"""
sum = 0
for i in range(XXX.__len__()):
sum += XXX[i]
return sum / XXX.__len__()
def ypj():
"""
Y 平均值
:return:
"""
sum = 0
for i in range(YYY.__len__()):
sum += YYY[i]
return sum / YYY.__len__()
def sse():
"""
迴歸方程
:return:
"""
sum = 0
xa = xpj()
ya = ypj()
for i in range(XXX.__len__()):
sum += (XXX[i] - xa) * (YYY[i] - ya)
return sum
def ssx():
"""
迴歸方程
:return:
"""
sum = 0
xa = xpj()
for i in range(XXX.__len__()):
sum += (XXX[i] - xa) * (XXX[i] - xa)
return sum
def getbeta1():
"""
bate1
:return:
"""
bbeta = sse() / ssx()
return bbeta
def getbeta0():
"""
beta0
:return:
"""
return ypj() - getbeta1() * xpj()
def huiguixishu(x, y):
"""
迴歸係數
:param x:
:param y:
:return:
"""
global XXX
global YYY
XXX = x
YYY = y
beta1 = getbeta1()
beta0 = getbeta0()
return [beta0, beta1]
def predic(x, beta0, beta1):
"""
估計
:param x:
:param beta0:
:param beta1:
:return:
"""
a = beta0 + beta1 * x
return a
if __name__ == '__main__':
d = read_m("軌道檔案.txt")
tm = d["time"]
x = d["x"]
y = d["y"]
z = d["z"]
print("========迴歸係數=========")
a = huiguixishu(tm, x)
b = huiguixishu(tm, y)
c = huiguixishu(tm, z)
print(a)
print(b)
print(c)
print("========預測=========")
guji_time = [4200,4500,4800]
beta0_list = [a[0],b[0],c[0]]
beta1_list = [a[1],b[1],c[1]]
for i in range(guji_time.__len__()):
x = predic(guji_time[i],beta0_list[0],beta1_list[0])
y = predic(guji_time[i],beta0_list[1],beta1_list[1])
z = predic(guji_time[i],beta0_list[2],beta1_list[2])
print(guji_time[i],format(x,'0.3f') ,format(y,'0.3f'),format(z,'0.3f'))
結果
========迴歸係數=========
[21146.959615384614, 1.2183738095238088]
[-7019.398461538461, 0.21143040293040288]
[15712.87576923077, -2.8401093406593407]
========預測=========
4200 26264.130 -6131.391 3784.417
4500 26629.642 -6067.962 2932.384
4800 26995.154 -6004.533 2080.351
相關文章
- 【測繪程式設計試題集】 試題01 計程車軌跡資料計算程式設計
- 【測繪程式設計試題集】 試題06 軌跡資料壓縮演算法程式設計演算法
- 【測繪程式設計試題集】 試題04 最短路徑計算程式設計
- 03_利用pytorch解決線性迴歸問題PyTorch
- 【測繪程式設計試題集】 試題02 矩陣卷積計算程式設計矩陣卷積
- 【測繪程式設計試題集】 試題09 反距離加權插值程式設計
- 程式設計師進階之路之面試題與筆試題集錦(三)線上程式設計題程式設計師面試題筆試
- 迴歸測試遇到的問題求助
- 程式設計師進階之路之面試題與筆試題集錦(一)程式設計師面試題筆試
- 使用線性迴歸模型預測黃金ETF價格模型
- PRML 迴歸的線性模型模型
- 使用java+TestNG進行介面迴歸測試Java
- 多元線性迴歸模型模型
- 線性迴歸-如何對資料進行迴歸分析
- 【機器學習】線性迴歸預測機器學習
- 如何設計、挑選有效的迴歸測試用例
- 面試題:一道關於解構賦值和引數預設值的程式設計題面試題賦值程式設計
- 預測演算法之多元線性迴歸演算法
- 軟體迴歸測試常用方法有哪些?迴歸測試報告收費貴嗎?測試報告
- 【程式設計測試題】阿里巴巴2019年提前批程式設計題程式設計阿里
- 【程式設計測試題】頭條校招程式設計
- 一元線性迴歸模型模型
- 100道測試工程師筆試題工程師筆試
- 面試鴨上線了!程式設計師線上面試刷題神器面試程式設計師
- 詳解迴歸測試
- 03 迴歸演算法 - 線性迴歸求解 θ(最小二乘求解)演算法
- Java併發程式設計71道面試題及答案Java程式設計面試題
- Java併發程式設計73道面試題及答案Java程式設計面試題
- Java併發程式設計40道面試題及答案——面試穩了Java程式設計面試題
- 線性迴歸-程式碼庫
- 軟體測試學習教程—迴歸測試
- 介面測試過程中常見的介面安全性問題,通用測試點整理歸納
- 【程式設計測試題】遊戲任務標記程式設計遊戲
- 【程式設計測試題】素數對、不要二、求和程式設計
- web前端面試題:20道做完信心嫉妒膨脹的測試題Web前端面試題
- 請教各位,一般寫介面,線上上想做迴歸測試的話,如何進行呢
- 線性迴歸
- 一道遞迴陣列面試題遞迴陣列面試題