numpy之資料平滑處理

2022-07-17 20:33:14 字數 3588 閱讀 3945

'''

1.資料平滑:通常包含降噪、擬合等操作。降噪的功能在於去除額外的影響因素,擬合的目的在於數學模型化,可以通過更多的數學方法識別曲線的特徵。

2.繪製兩支**的收益率

---收益率 =(後一天的**價 - 前一天的**價)/前一天的**價

'''import

matplotlib.pyplot as mp

import

numpy as np

import

datetime as dt

import

matplotlib.dates as md

#日期轉化函式

defdmy2ymd(dmy):

#把dmy格式的字串轉化成ymd格式的字串

dmy = str(dmy, encoding='

utf-8')

d = dt.datetime.strptime(dmy, '

%d-%m-%y')

d =d.date()

ymd = d.strftime('

%y-%m-%d')

return

ymddates, bhp_closing_prices =\

np.loadtxt(

'./da_data/bhp.csv

', delimiter='

,', usecols=(1, 6), unpack=true,

dtype='

m8[d], f8

', converters=) #

converters為轉換器,執行時先執行,其中1表示時間所在的列索引號

vale_closing_prices =\

np.loadtxt(

'./da_data/vale.csv

', delimiter='

,', usecols=(6,), unpack=true,

dtype='f8'

)#繪製**價折線圖

mp.figure('

profits

', facecolor='

lightgray')

mp.title(

'profits

', fontsize=18)

mp.xlabel(

'date

', fontsize=12)

mp.ylabel(

'profits

', fontsize=12)

mp.tick_params(labelsize=10)

mp.grid(linestyle=':'

)#設定x軸的刻度定位器,使之更適合顯示日期資料

ax =mp.gca()

#以周一作為主刻度

ma_loc = md.weekdaylocator(byweekday=md.mo)

#次刻度,除周一外的日期

mi_loc =md.daylocator()

ax.xaxis.set_major_locator(ma_loc)

ax.xaxis.set_major_formatter(md.dateformatter(

'%y-%m-%d'))

ax.xaxis.set_minor_locator(mi_loc)

#日期資料型別轉換,更適合繪圖

dates =dates.astype(md.datetime.datetime)

#計算兩支**的收益率

bhp_returns = np.diff(bhp_closing_prices) / bhp_closing_prices[:-1]

vale_returns = np.diff(vale_closing_prices) / vale_closing_prices[:-1]

#繪製兩支**的收益率曲線

mp.plot(dates[:-1], bhp_returns, color='

orangered

', label='

bhp_return

', alpha=0.3)

mp.plot(dates[:-1], vale_returns, color='

dodgerblue

', label='

vale_return

', alpha=0.3)

#mp.hlines(0, md.date2num(dates[0]), md.date2num(dates[-1]), colors='red')

#使用卷積對兩組資料降噪

kernel = np.hanning(8) #

隨機生成乙個卷積核(對稱的)

kernel /=kernel.sum()

bhp_returns_convolved = np.convolve(bhp_returns, kernel, '

valid')

vale_returns_convolved = np.convolve(vale_returns, kernel, '

valid')

#mp.plot(dates[7:-1], bhp_returns_convolved, color='orangered', label='bhp_returns_convolved')

#mp.plot(dates[7:-1], vale_returns_convolved, color='dodgerblue', label='vale_returns_convolved')

#對兩條曲線執行多項式擬合

days = dates[7:-1].astype('

m8[d]

').astype('i4'

)bhp_p = np.polyfit(days, bhp_returns_convolved, 3)

vale_p = np.polyfit(days, vale_returns_convolved, 3)

#繪製多項式曲線

bhp_y =np.polyval(bhp_p, days)

vale_y =np.polyval(vale_p, days)

mp.plot(dates[7:-1], bhp_y, color='

greenyellow

', label='

bhp_y')

mp.plot(dates[7:-1], vale_y, color='

pink

', label='

vale_y')

#求曲線的交點座標

p = np.polysub(bhp_p, vale_p) #

求兩個多項式函式的差函式的p值

xs =np.roots(p)

y =np.polyval(bhp_p, xs)

result = xs.astype('

i4').astype('

m8[d]')

mp.scatter(result, y, s=80, color='

red', zorder=3)

mp.tight_layout()

mp.legend()

#自動格式化x軸日期的顯示格式(以最合適的方式顯示)

mp.gcf().autofmt_xdate()

mp.show()

怎麼進行資料平滑濾波 振動訊號的平滑處理

振動訊號的平滑處理 一般來說,資料採集器得到的振動訊號會包含有雜訊成分。這些雜訊訊號主要包括 無規律的隨機干擾訊號和其它週期性的高頻干擾訊號等。由於隨機干擾訊號與正常訊號相比,其頻帶更寬,因而所採集的離散的振動訊號資料曲線上就會出現很多毛刺,這些毛刺為幹攏訊號的表現形式。這時我們就需要對資料進行平滑...

numpy學習 資料預處理

待處理的資料 150 150的灰度,除分析目標外,背景已經抹 需要實現的目標 背景數字 不變,對其餘數字做乙個歸一化處理 對list處理可以用 a list set a 實現了去除重複元素並排序 對array處理可以用np.unique 這個函式,可以去除其中重複的元素,並按元素由大到小返回乙個新的...

UIScrollView 平滑划動處理

ios開發經常會用到uiscrollview,而能夠平滑的展示划動效果,是至關重要的。比較常用的方法有兩種 1 將所有的scrollview子頁面都add到scrollview中,這樣可以平滑滑動,但占用資源加多,並且初始化載入比較慢。2 使用三個頁面view,在滑動過程中如指標輪詢那樣交替使用。優...