d2l机器学习相关代码速记

1. 一些基础代码

1.1 给代码加进度条

在训练的时候一般都耗时非常之长,增加一个进度条可以很好的缓解训练时候的焦虑(对我而言非常)

  1. 安装 tqdm 包
pip install tqdm
  1. 导入尝试下感觉
import time
from tqdm import trange
 
for i in trange(100):
    # do something
    time.sleep(0.1)

100%|██████████| 100/100 [00:10<00:00, 9.23it/s]

  1. 将进度条放入代码,将原来的range替换成trange。这样在训练的时候就可以有进度条了
    在这里插入图片描述
    0%| | 0/100 [00:00<?, ?it/s]
    100%|██████████| 100/100 [01:52<00:00, 1.13s/it]
    折1,训练log rmse0.044815, 验证log rmse0.029582
    100%|██████████| 100/100 [01:51<00:00, 1.12s/it]
    折2,训练log rmse0.131946, 验证log rmse0.134651
    100%|██████████| 100/100 [01:53<00:00, 1.14s/it]
    折3,训练log rmse0.046287, 验证log rmse0.036686
    100%|██████████| 100/100 [01:48<00:00, 1.09s/it]
    折4,训练log rmse0.048282, 验证log rmse0.040335
    100%|██████████| 100/100 [01:44<00:00, 1.05s/it]
    折5,训练log rmse0.015416, 验证log rmse0.045232

显示大概如上,我是很舒适了

1.2 查看数据

这个是查看数据的维度,长宽高

print(train_data.shape)
print(test_data.shape)

(47439, 41)
(31626, 40)

切片的方式查看数据

print(train_data.iloc[0:4, [0, 1, 2, 3, -3, -2, -1]])

在这里插入图片描述

查看数据中所以的类别信息

all_features.info()

在这里插入图片描述

查看数组all_features 中 object的信息

for in_object in all_features.dtypes[all_features.dtypes=='object'].index:
    print(in_object.ljust(20),len(all_features[in_object].unique()))

在这里插入图片描述

可以用做删除一些列信息,以标题作为索引,直接删除数据

'''
删除redundant_cols列表中所列出的内容,作者认为这个部分是多余的数据
'''
redundant_cols = ['Address','Summary','City','State']
for c in redundant_cols:
    del test_datac[c],train_datac[c]

显示所有列的信息

train_data.columns

在这里插入图片描述

查看数据长度

有两个方式 1.len的方式查看,2. shape的方式查看
两个差异如何不清楚,但一个无法使用的时候可以都试试

len(mnist_train), len(mnist_test)

(60000, 10000)

mnist_train[0][0].shape

torch.Size([1, 28, 28])

1.3 给代码添加计时

这边使用的是d2l的代码,

class Timer:  #@save
    """记录多次运行时间"""
    def __init__(self):
        self.times = []
        self.start()

    def start(self):
        """启动计时器"""
        self.tik = time.time()

    def stop(self):
        """停止计时器并将时间记录在列表中"""
        self.times.append(time.time() - self.tik)
        return self.times[-1]

    def avg(self):
        """返回平均时间"""
        return sum(self.times) / len(self.times)

    def sum(self):
        """返回时间总和"""
        return sum(self.times)

    def cumsum(self):
        """返回累计时间"""
        return np.array(self.times).cumsum().tolist()
c = torch.zeros(n)
timer = Timer()
for i in range(n):
    c[i] = a[i] + b[i]
f'{timer.stop():.5f} sec'

‘0.04926 sec’

调用start 就可以开始计时,使用stop就可以打印出相关的时间
timer.start()
d = a + b
f'{timer.stop():.5f} sec'

‘0.00000 sec’

计算

计算复杂度计算

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值