简单的试验

Python

求补集

a = [3, 4, 5, 6]
b = [1, 4, 6, 8]
#求b相对于a的补集,元素属于a但不属于b
results_1= [ i for i in a if i not in b ]
print('results_1:',results_1)
results_2= list(set(a).difference(set(b)))
print('results_2:',results_2)
results_3= set(a)-set(b)
print('results_3:',results_3)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EDO6pkYl-1662912678806)(picture/20210113222212229.png)]

再例:print(set(train_df.columns)-set(test_df.columns))

类的继承

使用super().__init__():的原因是,一般情况下,子类继承负父类是不用初始化的,但是,如果子类也想初始化,这时如果子类还想继承父类的初始化的类属性,就必须使用这个代码

动态打印进度

for i in range(100):
    # 计算下载百分比
    per = (i + 1) * 100 / 100
    # 打印进度条(\r是将光标移动到行的开始,会覆盖上一次打印的内容,形成动态打印)
    print("\rdownload %s%.f%s" % ('#' * int(per), per, '%'), flush=True, end='')

训练模型中常用到的:

print("\rEPOCH%d:%s%.f%s"%(n,'#'*int(per),per,'%'),flush=True,end='')

长版print("\rEPOCH%d:|%s>|%.f%s"%(n,'='*int(per/2),per,'%'),flush=True,end='')

字符串格式化输出

参考

a=10,b="aifj"
"%d是这样%s"%(a,b)

字典用法

  • 获取字典值
ist1 = ['Author', 'age', 'sex']
list2 = ['Python当打之年', [18,99], '男']
dic1 = dict(zip(list1, list2))
Author = dic1.get('Author')
#Author = Python当打之年
phone = dic1.get('phone')
#phone = None
phone = dic1.get('phone','12345678')
#phone = 12345678

调其他文件夹下的py文件

参考

关于函数的参数****args和kwargs

参考

copy.deepcopy()

生成一个新的地址来储存对象,以免造成干扰

计算运行时间

import time
time_start = time.time()  # 记录开始时间
# function()   执行的程序
time_end = time.time()  # 记录结束时间
time_sum = time_end - time_start  # 计算的时间差为程序的执行时间,单位为秒/s
print(time_sum)

Excel

负数置零

ctrl+f,查找替换,查找内容’-*‘,替换为’0’

行列求和

或者直接用快速分析,行列求和即可

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eq6Hx1W6-1662912678807)(picture/image-20220823104655827.png)]

删除头字或单位

使用 =REPLACE(目标,起始位置,删除长度,“”)

""表示的是空格,替换成空格即为删除

删除数字前的0

=–单元格

画雷达图

适合多样本多指标的问题,不过好像一般样本为横轴,指标为纵轴


Github

『教程』一看就懂!Github基础教程_哔哩哔哩_bilibili

Matplotlib

导包

import matplotlib.pyplot as plt

查看数据分布

df.hist(figsize=(16,14))
plt.savefig("Plots.jpg",dpi=300, pad_inches = 0)
plt.show()

基本画图操作

plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文标签
plt.rcParams['axes.unicode_minus'] = False   # 显示负号

plt.plot(range(),m,label='',color='')
plt.xlabel("")
plt.ylabel("")
plt.title("")
plt.xticks(list1)#xticks设置 x 轴刻度的数目与取值
plt.yticks(list2)#yticks设置 y 轴刻度的数目与取值
plt.legend()
plt.savefig('.png',dpi=600)
plt.show()



Pandas

显示问题

#显示所有列
pd.set_option('display.max_columns', None)
#显示所有行
pd.set_option('display.max_rows', None)
#设置value的显示长度为100,默认为50
pd.set_option('max_colwidth',100)

#显示中文和负号
plt.rcParams['font.sans-serif']=['SimHei']#在图中显示中文
plt.rcParams['axes.unicode_minus']=False#在图中显示负号

读取指定列

pd.read_csv(r'./时间序列预测数据集合集/mtl_data_1.xlsx',usecols=[0,1,2],header=None)

这里注意:相对路径要加’.',而且是反斜杠

切片

df.iloc[1:2,:10]#直接切片

导入导出

pandas.read_excel()

DataFrame.to_excel()

excel内含多张表sheet

df = pd.read_excel(r'',sheet_name='')

补充指定表头

df = pd.read_csv('data.csv', sep='\t',header=None, names=['var_code','var_name','var_desc'])

查找缺失值位置

这个是获取列缺失值的索引列表,可以拿来做拉格朗日插值
na_indexlist = df['列名'][df['列名'].isnull().values==True].index.values.tolist()

填补缺失值

df.fillna(method='ffill')#前补
df.fillna(method='bfill')#后补
df.fillna(df.mean())#平均值填补各列
df.fillna(df.median())#中位数填补
df = df.interpolate()#插值法,默认为线性插值,填补缺失值前一个和后一个的平均值

#拉格朗日插值
#这方法好像不太行,放弃了

one-hot编码

data = pd.get_dummies(data)

指定某行某列

df.iloc[3,2]

粘连新的列

data_new = pd.concat([heart_new,cp_dummies],axis=1)

强制转换列数据类型

df['金额'].astype('数据类型')

注意:numpy那边的操作为

ndarray.astype(np.数据类型)

没有引号

删除指定列

df.drop('column_name',axis=1, inplace=True)可一次删除多列

合并列

pd.concat([df,protocol_type_dummies,service_dummies,flag_dummies],axis=1)

透视表

案例一案例二

Seaborn

热力图(稳定的)

plt.figure(figsize=(3,10)) ax= sns.heatmap(df.corr(),cmap=plt.cm.RdYlBu_r , vmax=1, vmin=-1,annot=True ,fmt='.2f')

这是矩阵形状的

如果想要查看单个特征与其他的关系,并且对相关系数进行排列,只需将data改为

df.corr()[['satisfaction']].sort_values('satisfaction',ascending=False)

热力图(还没学会的)

seaborn.heatmap(data, vmin=None, vmax=None, cmap=None, center=None, robust=False, annot=None, fmt='.2g', annot_kws=None,linewidths=0, linecolor='white', cbar=True, cbar_kws=None, cbar_ax=None, square=False, xticklabels='auto', yticklabels='auto',mask=None, ax=None, **kwargs)

  • data:矩形数据集

    可以强制转换为ndarray格式数据的2维数据集。如果提供了Pandas DataFrame数据,索引/列信息将用于标记列和行。那么如果提供了关系矩阵就可以显示变量之间的相关性。

  • vmin, vmax:浮点型数据,可选参数

    用于锚定色彩映射的值,否则它们是从数据和其他关键字参数推断出来的

  • cmap:matplotlib 颜色条名称或者对象,或者是颜色列表,可选参数

    从数据值到颜色空间的映射。 如果没有提供,默认值将取决于是否设置了“center”

  • center:浮点数,可选参数

    绘制有色数据时将色彩映射居中的值。 如果没有指定,则使用此参数将更改默认的cmap

  • annot:布尔值或者矩形数据,可选参数

    如果为True,则在每个热力图单元格中写入数据值。 如果数组的形状与data相同,则使用它来代替原始数据注释热力图

  • mask:布尔数组或者DataFrame数据,可选参数

    如果为空值,数据将不会显示在mask为True的单元格中。 具有缺失值的单元格将自动被屏蔽

  • cbar:布尔值,可选参数

    描述是否绘制颜色条

  • square:布尔值,可选参数

    如果为True,则将坐标轴方向设置为“equal”,以使每个单元格为方形

  • xticklabels, yticklabels:“auto”,布尔值,类列表值,或者整形数值,可选参数

    如果为True,则绘制数据框的列名称。如果为False,则不绘制列名称。如果是列表,则将这些替代标签绘制为xticklabels。如果是整数,则使用列名称,但仅绘制每个n标签。如果是“auto”,将尝试密集绘制不重叠的标签。

  • fmt:字符串,可选参数

    添加注释时要使用的字符串格式代码

  • annot_kws:字典或者键值对,可选参数

    当annot为True时,ax.text的关键字参数

  • ax:matplotlib Axes,可选参数

    绘制图的坐标轴,否则使用当前活动的坐标轴

画布大小

*plt.figure(figsize=(12, 6))*

字体大小

plt.title("Feature importances", fontsize=30)

plt.xticks(fontsize=30)

plt.yticks(fontsize=30)

#设置坐标标签字体大小

ax.set_xlabel(..., fontsize=30)

ax.set_ylabel(..., fontsize=30)

#设置图例字体大小

plt.show()

标题

plt.title()

  • fontsize设置字体大小,默认12,可选参数 [‘xx-small’, ‘x-small’, ‘small’, ‘medium’, ‘large’,‘x-large’, ‘xx-large’]

  • fontweight设置字体粗细,可选参数 [‘light’, ‘normal’, ‘medium’, ‘semibold’, ‘bold’, ‘heavy’, ‘black’]

  • fontstyle设置字体类型,可选参数[ ‘normal’ | ‘italic’ | ‘oblique’ ],italic斜体,oblique倾斜

  • verticalalignment设置水平对齐方式 ,可选参数 : ‘center’ , ‘top’ , ‘bottom’ , ‘baseline’

  • horizontalalignment设置垂直对齐方式,可选参数:left,right,center

  • rotation(旋转角度)可选参数为:vertical,horizontal 也可以为数字

  • alpha透明度,参数值0至1之间

  • backgroundcolor标题背景颜色

保存图片

*plt.savefig('jg.png',dpi=600)*

annot_kws=None,linewidths=0, linecolor=‘white’, cbar=True, cbar_kws=None, cbar_ax=None, square=False,

xticklabels=‘auto’, yticklabels=‘auto’,mask=None, ax=None, **kwargs)`

  • data:矩形数据集
  • 可以强制转换为ndarray格式数据的2维数据集。如果提供了Pandas DataFrame数据,索引/列信息将用于标记列和行。那么如果提供了关系矩阵就可以显示变量之间的相关性。
  • vmin, vmax:浮点型数据,可选参数
  • 用于锚定色彩映射的值,否则它们是从数据和其他关键字参数推断出来的
  • cmap:matplotlib 颜色条名称或者对象,或者是颜色列表,可选参数
  • 从数据值到颜色空间的映射。 如果没有提供,默认值将取决于是否设置了“center”
  • center:浮点数,可选参数
  • 绘制有色数据时将色彩映射居中的值。 如果没有指定,则使用此参数将更改默认的cmap
  • annot:布尔值或者矩形数据,可选参数
  • 如果为True,则在每个热力图单元格中写入数据值。 如果数组的形状与data相同,则使用它来代替原始数据注释热力图
  • mask:布尔数组或者DataFrame数据,可选参数
  • 如果为空值,数据将不会显示在mask为True的单元格中。 具有缺失值的单元格将自动被屏蔽
  • cbar:布尔值,可选参数
  • 描述是否绘制颜色条
  • square:布尔值,可选参数
  • 如果为True,则将坐标轴方向设置为“equal”,以使每个单元格为方形
  • xticklabels, yticklabels:“auto”,布尔值,类列表值,或者整形数值,可选参数
  • 如果为True,则绘制数据框的列名称。如果为False,则不绘制列名称。如果是列表,则将这些替代标签绘制为xticklabels。如果是整数,则使用列名称,但仅绘制每个n标签。如果是“auto”,将尝试密集绘制不重叠的标签。
  • fmt:字符串,可选参数
  • 添加注释时要使用的字符串格式代码
  • annot_kws:字典或者键值对,可选参数
  • 当annot为True时,ax.text的关键字参数
  • ax:matplotlib Axes,可选参数
  • 绘制图的坐标轴,否则使用当前活动的坐标轴

Numpy

计算特征值

eigenvalue, featurevector = np.linalg.eig(mat)

找最大值

import numpy as np
a = np.array([[1,2,3,3],[4,5,6,2],[0,8,4,9]])
print(a.max()) #获取整个矩阵的最大值 结果:9
print(a.min()) #获取整个矩阵的最小值 结果: 0
# 可以指定关键字参数axis来获得行最大(小)值或列最大(小)值
# axis=0 行方向最大(小)值,即获得每列的最大(小)值
# axis=1 列方向最大(小)值,即获得每行的最大(小)值
# 例如
print(a.max(axis=0)) #[4 8 6 9]
print(a.max(axis=1))#[3 6 9]
#返回的是位置(索引)
print(a.argmax(axis=0)) #[1 2 1 2]

创建空ndarray

x = np.array([[]]*3)

shape=(0,3)

替换值

import numpy as np arr = np.array([1,2,3,4,3,2,3,6,2,5]) num = 2 # 想要替换的数字 NUM = 10 # 替换后的数字 arr[(arr == num)] = NUM print(arr

求和

image-20220723112838304

记忆:axis=什么就是什么动

查看非零元素个数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xOwQjhd6-1662912678808)(C:\Users\Rostone\AppData\Roaming\Typora\typora-user-images\image-20220723113415329.png)]

np.count_nonzero(c,axis=1)

取绝对值

np.maximum(a, -a)

stack(),hstack(),vstack()

Numpy中stack(),hstack(),vstack()函数详解_neu_张康的博客-CSDN博客_hstack

  • h按行列方式堆叠,并转置
  • v按列方式堆叠,并转置

ndarray转list

ndarray.tolist()

SKlearn

LabelEncoder

MinMaxscaler

from sklearn.preprocessing import StandardScaler, MinMaxScaler
scaler = MinMaxScaler()#实例化转换器
train_data = min_max_scaler.fit_transform(train_data)#转换器拟合数据并对数据进行转换
test_data = min_max_scaler.transform(test_data)#转换器对测试集进行转换
test_data = min_max_scaler.inverse_transform(test_data)#还原数据

如果只有.fit()就是只会训练转换器,不会返回结果

Pytorch

参考(全)

Pytorch使用介绍 - 知乎 (zhihu.com)

tensor和ndarray的相互转换

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tF0cGa2f-1662912678808)(C:\Users\Rostone\AppData\Roaming\Typora\typora-user-images\image-20220720110206868.png)]

构造符合要求的tensor输入

x = torch.from_numpy(x_np[np.newaxis, :, np.newaxis])

Dataset和Dataloader

PyTorch DataLoader工作原理可视化 - 知乎

C S D N CSDN CSDN全解

案例1案例2

强推的案例3

from torch.utils.data import Dataset, DataLoader

class My_dataset(Dataset):
	def __init__(self):
        super.__init__()
        #以下皆为tensor格式
		self.x = 
        self.y = 
        
    def __getitem__(self,index):
        return self.x[index],self.y[index]
    
    def __len__(self):
        return len(self.x)
    
mydataset = My_dataset(类需要的参数)
dataloader = DataLoader(mydataset,batch_size= , shuffle = False, num_workers=0)
for i_batch, (x,y) in enumerate(dataloader):
    #这里是训练的过程

查看各层网络参数

net = Net()
print(net.fc1.weight)
print(net.fc1.bias)
print(net.fc2.weight)
print(net.fc2.bias)
print(net.fc3.weight)
print(net.fc3.bias

保存与加载模型

全面参考

举例参考

torch.save(net.state_dict(),r'./含初始化lstm.pkl')
#!!!如果模型没有完全训练好,需要把模型的优化器也一起保存
#torch.save(optimizer.state_dict(),r'./优化器.pkl')
net = Net(input_size,hidden_size,num_layers,batch_size)
net.load_state_dict(torch.load(r'./含初始化lstm.pkl'))
#optimizer = torch.optim.Adam(net.parameters(),lr)
#optimizer.load_state_dict(torch.load(r'./优化器.pkl'))
net.eval()	#听说这个是为了防止出错
net.forward(test_x)

创建空白torch好像不太行

#创建一个维度为(6,3,0)的张量
a = torch.tensor([[[]]*3]*6)

torch拼接

import torch
A=torch.ones(2,3) #2x3的张量(矩阵)
B=2*torch.ones(4,3)#4x3的张量(矩阵)
C=torch.cat((A,B),0)#按维数0(行)拼接,要求两个矩阵另一个维度(列)相等
print(C)#
# tensor([[1., 1., 1.],
#         [1., 1., 1.],
#         [2., 2., 2.],
#         [2., 2., 2.],
#         [2., 2., 2.],
#         [2., 2., 2.]])
print(C.size())#torch.Size([6, 3])
A=torch.ones(4,1) #2x3的张量(矩阵)
B=2*torch.ones(4,3)#4x3的张量(矩阵)
d=torch.cat((A,B),1)#按维数1(列)拼接,要求连个矩阵另一个维度相等,即这里要求两个矩阵行相等
print('d',d)
#tensor([[1., 2., 2., 2.],
        # [1., 2., 2., 2.],
        # [1., 2., 2., 2.],
        # [1., 2., 2., 2.]])
print(d.size())#([4, 4])

.squeeze()和.unsqueeze()

参数可选1或0,就是使得某一种张量和一维平直张量转换,参考

register_buffer( )

使得某些不进行训练的成员参数也能被保存下来,同时使得该参数也能被复制到GPU上,参考

nn.Module

LSTM

代码

class Net(nn.Module):
    def __init__(self,input_size,hidden_size,num_layers,batch_size):
        super().__init__()
        self.hidden_size = hidden_size
        self.num_layers = num_layers
        self.batch_size = batch_size
        self.lstm = nn.LSTM(input_size,hidden_size,num_layers,batch_first=True)
        self.linear = nn.Linear(hidden_size,1)
        
    def forward(self,x):
#        h_0 = torch.randn(self.num_layers, self.batch_size, self.hidden_size)
#        c_0 = torch.randn(self.num_layers, self.batch_size, self.hidden_size)
        x1, hidden_state= self.lstm(x,None)
        y = self.linear(x1)
        return x1,y

举例说明

  • batch_size=1, input_size=1, hidden_size=40, num_layers=1

  • 参数net.state_dict()

    • ‘lstm.weight_ih_l0’:(160,1),表示输入对应的四组参数(4*40,1)

    • ‘lstm.weight_hh_l0’:(160,40),表示上一个hidden_state对应的四组参数(4*40,40)

    • ‘lstm.bias_ih_l0’:(160),偏置

    • ‘lstm.bias_hh_l0’:(160),偏置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值