注:文中笔记有些是复制其它作者的内容整理而来。
1.在pycharm中查看内建函数源码
鼠标放在内建函数上,Ctrl+B,看源码
2.sklearn的train_test_split的random_state
我们在使用sklearn的train_test_split函数随机划分数据集生成training set 于test set时,在函数train_test_split中有一个参数为random_state。
random_state:随机数种子——其实就是该组随机数的编号,在需要重复试验的时候,保证得到一组一样的随机数。比如每次都为1,其他参数一样的情况下你得到的随机数组是一样的。当为None时,产生的随机数组也会是随机的。
随机数的产生取决于种子,随机数和种子之间的关系遵从以下两个规则:种子不同,产生不同的随机数;种子相同,即使实例不同也产生相同的随机数。
下面我们通俗的解释一下就是:
参数test_size:如果是浮点数,在0-1之间,表示test set的样本占比;如果是整数的话就表示test set样本数量。
test_size只是确定training set于test set的各自所占比例或者数量,并没有确定数据的划分规则。比如我们有数据集[1,2,3,4,5,6,7,8,9],我们确定test_size=3,那问题是我们应该取哪三个数作为test set呢,这时候就应该使用random_state来确定我们的划分规则,假设我们取random_state=1,它按一定的规则去取出我们的数据,当我们random_state=2时,它又换成另一种规则去取我们的数据,random_state的取值范围为0-2^32。当random_state=None时,可以理解为随机分配一个整数给random_state,这样就导致每次运行的结果都可能不同。
其他函数中的random_state参数功能是类似的。
3.python enumerate用法
- 对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值
- enumerate多用于在for循环中得到计数
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):
print index, item
>>>
0 这
1 是
2 一个
3 测试
enumerate还可以接收第二个参数,用于指定索引起始值,如:
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1, 1):
print index, item
>>>
1 这
2 是
3 一个
4 测试
4. fit,transform,fit_transform
fit(): 简单来说,就是求得训练集X的均值,方差,最大值,最小值,这些训练集X固有的属性。
transform(): 在fit的基础上,进行标准化,降维,归一化等操作(看具体用的是哪个工具,如PCA,StandardScaler等)。
fit_transform():fit_transform是fit和transform的组合,既包括了训练又包含了转换。
transform()和fit_transform()二者的功能都是对数据进行某种统一处理(比如标准化~N(0,1),将数据缩放(映射)到某个固定区间,归一化,正则化等)
fit_transform(trainData)对部分数据先拟合fit,找到该part的整体指标,如均值、方差、最大值最小值等等(根据具体转换的目的),然后对该trainData进行转换transform,从而实现数据的标准化、归一化等等。
根据对之前部分trainData进行fit的整体指标,对剩余的数据(testData)使用同样的均值、方差、最大最小值等指标进行转换transform(testData),从而保证train、test处理方式相同。所以,一般都是这么用:
from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
sc.fit_tranform(X_train)
sc.tranform(X_test)
5.set_printoptions() 设置打印显示方式
np.set_printoptions(precision=None, threshold=None, edgeitems=None,
linewidth=None, suppress=None, nanstr=None, infstr=None,
formatter=None, sign=None, floatmode=None, --kwarg) #设置打印选项
参数
precision:int or None浮点输出的精度位数(默认8)# 如floatmode不是fixed,可能是None
threshold:int触发汇总的数组元素总数而不是完整的repr(默认1000)
edgeitems:int在开头和结尾的摘要中的数组项数 每个维度(默认为3)
linewidth:int每行用于插入的字符数# 换行符(默认为75)
suppress : bool,科学记数法启用
# True用固定点打印浮点数符号,当前精度中的数字等于零将打印为零。
# False用科学记数法;最小数绝对值是<1e-4或比率最大绝对值> 1e3。默认值False
nanstr:str浮点非字母数字的字符串表示形式(默认为nan)
infstr:str浮点无穷大字符串表示形式(默认inf)
sign:string,' - ','+'或'',控制浮点类型符号的打印。
# '+'打印正值标志。''打印空格。' - '省略正值符号,默认
6.np.eye()生成对角阵
numpy.eye(N,M=None, k=0, dtype=<type 'float'>)
关注第一个第三个参数就行了
第一个参数:输出方阵(行数=列数)的规模,即行数或列数
第三个参数:默认情况下输出的是对角线全“1”,其余全“0”的方阵,如果k为正整数,则在右上方第k条对角线全“1”其余全“0”,k为负整数则在左下方第k条对角线全“1”其余全“0”。
7.numpy的ones_like函数
返回一个用1填充的跟输入 形状和类型 一致的数组。
>>> x = np.arange(6)
>>> x = x.reshape((2, 3))
>>> x
array([[0, 1, 2],
[3, 4, 5]])
>>> np.ones_like(x)
array([[1, 1, 1],
[1, 1, 1]])