'''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,在滑動過程中如指標輪詢那樣交替使用。優...