[kaggle] House-price(房价预测)中的代码

  • pandas.DataFrame.dtypes

用法:df.dtypes,返回一个Series(sereies的index是DF每一列的名字,value是每一列的dtype)描述了每一列的数据类型,可以通过列的索引来索引返回的Series。如果某一列中混合了多种类型,则该列的类型被认为是object类型。

df = pd.DataFrame({'float': [1.0],
                   'int': [1],
                   'datetime': [pd.Timestamp('20180310')],
                   'string': ['foo']})

print(type(df.dtypes))
print()
print(df.dtypes)
print()
print(df.dtypes[1])
"""
<class 'pandas.core.series.Series'>

float              float64
int                  int64
datetime    datetime64[ns]
string              object
dtype: object

int64
"""

· pandas.DataFrame.apply
DataFrame.apply(func, axis=0, raw=False, result_type=None, args=(), **kwargs)

func:function

Function to apply to each column or row.即对DF中的每列依次执行func函数,func函数中的参数可以代表张量

该参数一般传入lambda表达式,lambda表达式规定对表格行或列的操作。

axis:{0 or ‘index’, 1 or ‘columns’}, default 0

0 or ‘index’: apply function to each column.(该参数取0表示对列进行操作)

1 or ‘columns’: apply function to each row.(该参数取1表示对行进行操作)
 


pandas.get_dummies
pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)

利用pandas实现将离散值转换为one hot encode的方式。

data:array-like, Series, or DataFrame

Data of which to get dummy indicators.(操作的是整个表格对象,如果需要对某些列操作可以直接传入dataframe.列名,还需要将结果拼接到原表格中并删除拆分前的列)

dummy_na:bool, default :False

Add a column to indicate NaNs, if False NaNs are ignored.(当为True时,取值为nan也会被编为新的一列;如果为False就不会创建nan这一列,所以取值为nan的在变换后的这些列的取值都为0)
 

import pandas as pd
df = pd.DataFrame([
            ['green' , 'A'],
            ['red'   , 'B'],
            ['blue'  , 'A']])

df.columns = ['color',  'class']
print(df)
print(pd.get_dummies(df))
"""
   color class
0  green     A
1    red     B
2   blue     A
   color_blue  color_green  color_red  class_A  class_B
0           0            1          0        1        0
1           0            0          1        0        1
2           1            0          0        1        0
————————————————
版权声明:本文为CSDN博主「不牌不改」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_46221946/article/details/122699952

pandas fillna() :fillna()会填充nan数据,并返回填充后的结果。

torch.cat

C=torch.cat((A,B),0)就表示按维数0(行)拼接A和B,也就是竖着拼接,A上B下。此时需要注意:列数必须一致,即维数1数值要相同,方能列对齐。

C=torch.cat((A,B),1)就表示按维数1(列)拼接A和B,也就是横着拼接,A左B右。此时需要注意:行数必须一致,即维数0数值要相同,方能行对齐。

从2维例子可以看出,使用torch.cat((A,B),dim)时,除拼接维数dim数值可不同外其余维数数值需相同,方能对齐。


 torch.sqrt 

sqrt(x) 函数的定义域为 [0, 无穷大)
sqrt(x) 的导函数的定义域 却是 (0, 无穷大)

这些函数定义域跟导函数的定义域不一样,正向传播可以得到正常结果,但是一旦backward就会得到Nan。

因此在代码中先要将linear的输出值clamp到(1,正无穷)


torch.clamp(input, min, max, out=None) → Tensor

 将输入input张量每个元素的夹紧到区间 [min,max][min,max],并返回结果到一个新张量。

clippes_preds = torch.clamp(net(features),1,float('inf'))  

Python中可以用如下方式表示正负无穷:

float("inf"), float("-inf")


class slice(start, stop[, step])

该函数用于创建切片(slice)对象,切片对象表示由 range(start, stop,step) 指定的索引的集合。

start, stop, step 可以是任意类型的值,其中 startstep 的默认值是 None


torch.nn.Linear

首先nn.Linear是一个类,使用前需要先实例化,实例化时需要传入输入神经元的个数,和输出神经元的个数,不用管batch_size。

不需要定义w和b。所有nn.Module的子类,形如nn.XXX的层,都会在实例化的同时随机生成w和b的初始值。所以实例化之后,我们就可以调用属性weight和bias来查看生成的w和b。其中w是必然会生成的,b是我们可以控制是否要生成的。在nn.Linear类中,有参数bias,默认 bias = True。如果我们希望不拟合常量b,在实例化时将参数bias设置为False即可。
 

其次

原因是:__call__() 该方法的功能类似于在类中重载 () 运算符,使得类实例对象可以像调用普通函数那样,以“对象名()”的形式使用。



最后是代码的思路结构:

数据清理:1得到所有的数据,对未缺省的数据列进行归一化,归一化之后恰好是均值的数据会被                      置为NA,因此对NA数据置零。

                    2.将所有数据分为train,test,train的labels

                    3.对train里的数据使用分为k折,k-1折作为训练,1折作为验证用来调参

  网络部分:1. 定义损失函数,这里用的是以MSE为基础的对数均方根误差。

                     2.定义网络,这里只要一个nn.Linear(

                     3.定义训练函数

                     4.将以上的k折作为基础进行k次训练。

                      5.在test上检验模型

        

参考:

Pytorch学习笔记(七)_秃头小白的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值