置信橢圓原理以及橢圓圖形繪制方式
置信橢圓原理及橢圓圖形繪制
置信橢圓長短軸計算
def confidence_oval(self,factor, ppf_rate): pca1_std = np.std(factor.iloc[:, 0]) pca2_std = np.std(factor.iloc[:, 1]) f_value = scipy.stats.f.ppf(ppf_rate, dfn=2, dfd=factor.iloc[:, 0].shape[0] - 2) x_axis = np.sqrt( pca1_std ** 2 * f_value * 2 * ((factor.iloc[:, 0].shape[0] - 1) / (factor.iloc[:, 0].shape[0] - 2))) y_axis = np.sqrt( pca2_std ** 2 * f_value * 2 * ((factor.iloc[:, 0].shape[0] - 1) / (factor.iloc[:, 0].shape[0] - 2))) x_axis = '%.2f' % x_axis y_axis = '%.2f' % y_axis return x_axis, y_axis
Python圖形繪制
def elli_plot(self,full_data, ellipse, y): ''' :param full_data: pls后的點 :param ellipse: [橢圓長軸,橢圓短軸] :param y: :return: ''' fig = plt.figure(figsize=(15, 5)) ax = fig.add_subplot(111) elli = Ellipse(xy=(0, 0), width=float(ellipse[0]) * 2, height=float(ellipse[1]) * 2) ax.add_patch(elli) # 偏厚 outlier_data = y.loc[y[y.columns[0]] == 3, :] # 偏薄 outlier_data_less = y.loc[y[y.columns[0]] == 1, :] inner_data = full_data['pls']['pls'].loc[full_data['pls']['pls'].index.isin(outlier_data.index.tolist()+outlier_data_less.index.tolist()) == False, :] ax.plot(outlier_data.iloc[:, 0], outlier_data.iloc[:, 1], 'ro') ax.plot(outlier_data_less.iloc[:, 0], outlier_data_less.iloc[:, 1], 'bo') ax.plot(inner_data.iloc[:, 0], inner_data.iloc[:, 1], 'yo') name = str(self.picture_id) plt.savefig("E:\\shhl\\1118_兩次PLS\\偏厚\\圖\\"+name+".png") self.picture_id = self.picture_id +1 plt.show()
from matplotlib.patches import Ellipse, Circle import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111) ell1 = Ellipse(xy = (0.0, 0.0), width = 4, height = 8, angle = 30.0, facecolor= 'yellow', alpha=0.3) cir1 = Circle(xy = (0.0, 0.0), radius=2, alpha=0.5) ax.add_patch(ell1) ax.add_patch(cir1) x, y = 0, 0 ax.scatter([0,1], [0,1],color='red') ax.scatter([2,1], [1,1],color='green') plt.axis('scaled') plt.axis('equal') #changes limits of x or y axis so that equal increments of x and y have the same length plt.show()
置信橢圓-python
卡方概率表:https://people.richland.edu/james/lecture/m170/tbl-chi.html
opencv畫橢圓:https://docs.opencv.org/2.4.9/modules/core/doc/drawing_functions.html?highlight=ellipse#cv2.ellipse
numpy.linalg.eig() 特征向量求解矩陣:https://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.linalg.eig.html
cov = np.cov(x, y) #計算協(xié)方差矩陣 lambda_, v = np.linalg.eig(cov) # 計算矩陣特征向量 lambda_ = np.sqrt(lambda_) s=4.605 #根據(jù)置信區(qū)間查卡方概率表 95% 5.991 99% 9.21 90% 4.605 ax = plt.subplot(111, aspect=‘equal') ell = Ellipse(xy=(np.mean(x), np.mean(y)), width=lambda_[0]*np.sqrt(s) *2, height=lambda_[1]*np.sqrt(s)*2, angle=np.rad2deg(np.arccos(v[0, 0])),facecolor=‘yellow',alpha=0.3) ax.add_artist(ell) plt.scatter(x, y) plt.axis(‘scaled') plt.axis(‘equal') plt.show()
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Django使用Channels實現(xiàn)WebSocket的方法
WebSocket是一種在單個TCP連接上進行全雙工通訊的協(xié)議。WebSocket允許服務(wù)端主動向客戶端推送數(shù)據(jù)。這篇文章主要介紹了Django使用Channels實現(xiàn)WebSocket,需要的朋友可以參考下2019-07-07python3.5 email實現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細介紹了python3.5 email實現(xiàn)發(fā)送郵件功能,包含txt、圖片、HTML、附件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05Python docx庫刪除復制paragraph及行高設(shè)置圖片插入示例
這篇文章主要為大家介紹了Python docx庫刪除復制paragraph及行高設(shè)置圖片插入操作實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07python3+pyqt5+itchat微信定時發(fā)送消息的方法
今天小編就為大家分享一篇python3+pyqt5+itchat微信定時發(fā)送消息的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02設(shè)計模式中的原型模式在Python程序中的應(yīng)用示例
這篇文章主要介紹了設(shè)計模式中的原型模式在Python程序中的應(yīng)用示例,文中主要強調(diào)了對淺拷貝和深拷貝在對象復制時的使用,需要的朋友可以參考下2016-03-03