1. Pandas
1.1. 对整体做映射
对于pd.Series类型,调用apply()函数
对于pd.DataFrame类型,调用applymap()函数
1.2. 转换pd.Series类型
调用astype()函数
当Series的一列整数中存在若干float值,则整体一列都为float类型,需要用astype()修正。
import pandas as pd
# 创建一个示例的 DataFrame
data = {'A': [1, 2.0, 3],
'B': [4, 5, 6]}
df = pd.DataFrame(data)
# 打印 DataFrame
print(df)
当Series中存在Nan值时,就会出现astype()函数报错。此时需要先用fillna()函数替换空值,参数为希望替换成的值。
1.3. 按行列读取df
通过iloc[:, :],输入行列索引即可
import pandas as pd
# 创建一个示例的 DataFrame
data = {'A': [1, 2, 3],
'B': [4, 5, 6]}
df = pd.DataFrame(data)
print(df)
# 或者通过索引读取列
column_A = df.iloc[0, :] # 通过索引读取第 0 行
column_B = df.iloc[1, :] # 通过索引读取第 1 行
# 打印读取到的列数据
print("Column A:")
print(type(column_A))
print("Column B:")
print(column_B)
1.4. 获取每一列的方差
直接通过var()函数
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
# 计算每一列的方差
variance = df.var()
# 打印结果
print(variance)
1.5. 对每一列做 0-1 normalization
数据帧的默认操作都是对列做操作。
import pandas as pd
df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
# 对每一列应用最小-最大缩放
df_normalized = (df - df.min()) / (df.max() - df.min())
# 显示结果
print(df_normalized)
1.6. 获取数据帧的表头
直接通过columns()函数获取。
也可以通过columns属性直接重新修改表头。
1.7. pd.Series排序
直接通过sort_values()函数原地排序。
1.8. 去除空值
df最常用的两个去除空值的方法:
dropna()函数
fillna()函数(用某个值替代)
1.9. 对数据帧进行统计
可以通过describe()函数,获取每一列的最小值,最大值,均值,标准差,first-quartile,中位数,third-quartile。
1.10. 读取excel文件
可以通过pd.read_excel直接读取excel文件。
1.11. 索引某一列的值
可以通过pd.(列表头)直接索引列的值,返回类型为pd.Series
train_data.SalePrice
2. Torch
2.1. 生成0-1间的随机张量
通过torch.rand()函数即可,其中size参数为输出的张量大小。
2.2. torch.rand和torch.randn
torch.rand是生成0-1间的随机小数,torch.randn是生成标准正态分布。
2.3. 初始化参数:apply与nn.init
apply是模型可以调用的一个参数,接受一个函数作为参数,本质上是一个映射操作,对该模型中的每个层做函数的映射。
def init_weights(layer):
if isinstance(layer, nn.Linear):
nn.init.normal_(layer.weight, std=0.01)
net.apply(init_weights)
也可以不对每个层做初始化的映射操作,转而对整个模型做初始化操作。
nn.init.xavier_uniform_(model.weight)
2.4. backward函数的gradient参数
下图是源代码中的解释:
换言之,调用backward函数必须要求是一个标量。为了对一个张量调用backward函数,必须先将其转换为张量,gradient参数就是设置在转换为张量时所需乘以的权重参数。
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = torch.sigmoid(x)
y.backward(torch.ones_like(x))
例如在以上的例子中,x是一个shape为(160)的张量,通过指定gradient参数同样为一个shape为(160)值全为1的张量作为权重,二者相乘,再进行反向传播。
注意这里计算的是哈达玛积而不是叉乘。
因此,以上这段代码是等效于以下这段代码的。
x = torch.arange(-8.0, 8.0, 0.1, requires_grad=True)
y = torch.sigmoid(x)
y.sum().backward()
3. 模型操作
3.1. torch.hub.load报错urllib.error.HTTPError: HTTP Error 403: rate limit exceeded
在load函数前加以下代码:
torch.hub._validate_not_a_forked_repo = lambda a, b, c: True
解决方案来源: