Python基本功1/20 2019.04.11

Python基本功1/20 2019.04.11

一、模型的保存及本地调用

1)、模型保存到本地
from sklearn.externals import joblib
model.fit(X, y)
model.fit(train_X,train_y)
joblib.dump(clf,"train_model.m")    #通过joblib的dump可以将模型保存到本地,下次可直接调用
2)、模型从本地调回
RL.model = joblib.load("train_model.m")

通过joblib的load方法,加载保存的模型。然后就可以在测试集上测试了。

RL.model .predit(test_X)      #此处test_X为特征集,用导入的模型做预测

注明:保存的模型就直接携带了模型的参数取值。

二、 lambda、map、apply等函数的区别

np.where()
lambda:
map()
apply()
NaN,None,Null的区别

需要提供关于apply()、applymap()、apply()使用的例子,明天提供

apply() 和applymap()是DataFrame数据类型的函数,map()是Series数据类型的函数。

apply()的操作对象DataFrame的一列或者一行数据, applymap()是element-wise的,作用于每个DataFrame的每个数据。 map()也是element-wise的,对Series中的每个数据调用一次函数。

总结是apply 用在dataframe上,用于对row或者column进行计算;
applymap 用于dataframe上,是元素级别的操作;
map(其实是python自带的)用于series上,是元素级别的操作。

三、loc()、iloc() 、ix() 三个函数的区别,需提供例子。明天搞懂

loc() # 通过行的索引来定位的;个人觉得通过行索引以及列索引的用法比较多。
iloc() # 通过行数来定位的; iloc() 索引的是第几行,或者第几列。通过行数、列数来定位,所以索引必须是数字。
ix() # 以上两种情况都可以。 ix()函数,pandas慢慢的比较少用了,主要提倡使用loc()、iloc()。
这三个函数理论上都可以用来索引你所要切片的任何行和列。

pandas.DataFrame.iloc

DataFrame.iloc

纯粹的基于整数位置的索引,用于按位置进行选择。
.iloc[]是基于主要的整数位置(从0到 length-1所述轴的),但也可以用布尔阵列使用。
允许的输入是:
*
一个整数,例如5。
*
整数列表或数组,例如。[4, 3, 0]
*
带有整数的切片对象,例如1:7。
*
一个布尔数组。
*
一个callable带有一个参数(调用Series,DataFrame或Panel)的函数,并返回索引的有效输出(上述之一)

pandas.DataFrame.loc

DataFrame.loc

纯粹的基于标签位置的索引器供标签选择。
.loc[] 主要是基于标签的,但也可以与布尔数组一起使用。
允许的输入是:
*
一个单一的标签,例如,5或’a’(这一点,5被解释为标签的索引的,并永远不会沿着索引的整数位置)。
*
标签的列表或数组,例如。[‘a’, ‘b’, ‘c’]
*
带有标签的切片对象,例如’a’:‘f’(注意,与通常的python切片相反,包括开始和停止)。
*
一个布尔数组。
*
一个callable带有一个参数(调用Series,DataFrame或Panel)的函数,并返回索引的有效输出(上述之一)

pandas.Series.ix

Series.ix

基于标签位置的索引器,整数位置回退。
.ix[]支持混合整数和基于标签的访问。它主要是基于标签的,但会回落到整数位置访问,除非对应的轴是整数类型。
.ix是最常见的索引,并将支持任何输入的.loc和.iloc。.ix也支持浮点标签方案。.ix在处理基于混合位置和标签的层次索引时非常有用。
但是,如果轴是基于整数的,则仅支持基于标签的访问而不支持位置访问。因此,在这种情况下,通常更好的是明确和使用.iloc或.loc。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在信号处理领域,DOA(Direction of Arrival)估计是一项关键技术,主要用于确定多个信号源到达接收阵列的方向。本文将详细探讨三种ESPRIT(Estimation of Signal Parameters via Rotational Invariance Techniques)算法在DOA估计中的实现,以及它们在MATLAB环境中的具体应用。 ESPRIT算法是由Paul Kailath等人于1986年提出的,其核心思想是利用阵列数据的旋转不变性来估计信号源的角度。这种算法相比传统的 MUSIC(Multiple Signal Classification)算法具有较低的计算复杂度,且无需进行特征值分解,因此在实际应用中颇具优势。 1. 普通ESPRIT算法 普通ESPRIT算法分为两个主要步骤:构造等效旋转不变系统和估计角度。通过空间平移(如延时)构建两个子阵列,使得它们之间的关系具有旋转不变性。然后,通过对子阵列数据进行最小二乘拟合,可以得到信号源的角频率估计,进一步转换为DOA估计。 2. 常规ESPRIT算法实现 在描述中提到的`common_esprit_method1.m`和`common_esprit_method2.m`是两种不同的普通ESPRIT算法实现。它们可能在实现细节上略有差异,比如选择子阵列的方式、参数估计的策略等。MATLAB代码通常会包含预处理步骤(如数据归一化)、子阵列构造、旋转不变性矩阵的建立、最小二乘估计等部分。通过运行这两个文件,可以比较它们在估计精度和计算效率上的异同。 3. TLS_ESPRIT算法 TLS(Total Least Squares)ESPRIT是对普通ESPRIT的优化,它考虑了数据噪声的影响,提高了估计的稳健性。在TLS_ESPRIT算法中,不假设数据噪声是高斯白噪声,而是采用总最小二乘准则来拟合数据。这使得算法在噪声环境下表现更优。`TLS_esprit.m`文件应该包含了TLS_ESPRIT算法的完整实现,包括TLS估计的步骤和旋转不变性矩阵的改进处理。 在实际应用中,选择合适的ESPRIT变体取决于系统条件,例如噪声水平、信号质量以及计算资源。通过MATLAB实现,研究者和工程师可以方便地比较不同算法的效果,并根据需要进行调整和优化。同时,这些代码也为教学和学习DOA估计提供了一个直观的平台,有助于深入理解ESPRIT算法的工作原理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值