1、首先读入数据需要的就是pandas和read了,读入后查看数据用.head()方法:
import pandas as pd
data = pd.read_csv("路径")
data.head()
2、TF-IDF转化
from sklearn.feature_extraction.text import TfidfVectorizer
tf_idf = TfidfVectorizer()
tf_idf.fit_transform(data)
其中参数:
(1)max_df: 浮点型范围 [0.0, 1.0] 或整形, 默认1.0
当构建词汇表时,严格忽略高于给出阈值的文档频率的词条,语料指定的停用词。如果是浮点值,该参数代表文档的比例,整型绝对计数值。
(2)min_df:浮点型范围 [0.0, 1.0] 或整形, 默认1.0
当构建词汇表时,严格忽略低于给出阈值的文档频率的词条,语料指定的停用词。如果是浮点值,该参数代表文档的比例,整型绝对计数值。
(3)stop_words:string {‘english’}, list, or None(default)
①如果为english,用于英语内建的停用词列表。
②如果为list,该列表被假定为包含停用词,列表中的所有词都将从令牌中删除。
③如果None,不使用停用词。max_df可以被设置为范围[0.7, 1.0)的值,基于内部预料词频来自动检测和过滤停用词。
(4)ngram_range: tuple(min_n, max_n)
要提取的n-gram的n-values的下限和上限范围,在min_n <= n <= max_n区间的n的全部值
(5)tokenizer:callable or None(default)
当保留预处理和n-gram生成步骤时,覆盖字符串令牌步骤
(6)use_idf:boolean, optional
启动inverse-document-frequency重新计算权重
(7)smooth_idf:boolean,optional
通过加1到文档频率平滑idf权重,为防止除零,加入一个额外的文档
(8)sublinear_tf:boolean, optional
应用线性缩放TF,例如,使用1+log(tf)覆盖tf
(9)strip_accents: {‘ascii’, ‘unicode’, None}
在预处理步骤中去除编码规则(accents),”ASCII码“是一种快速的方法,仅适用于有一个直接的ASCII字符映射,”unicode”是一个稍慢一些的方法,None(默认)什么都不做
3、Logistic Regression
from sklearn.linear_model import LogisticRegression
re = LogisticRegression(C=4,dual=True)
re.fit(x_train,y)
参数:
(1)dual:
布尔型,默认:False。当样本数>特征数时,令dual=False;用于liblinear解决器中L2正则化。当n_samples> n_features时,首选dual = False。
(2)C
浮点型,默认:1.0;其值等于正则化强度的倒数,为正的浮点数。数值越小表示正则化越强。
4、生成随机数
import numpy as np
np.random.seed(seed)
import random
random(seed)
seed:使得随机数据可预测,即只要seed的值一样,后续生成的随机数都一样。
5、 系统变量
import os
os.environ['PYTHONHASHSEED'] = '0'
environ是一个字符串所对应环境的映像对象,这里主要是为了禁止hash随机化,使得实验可复现。
6、随机种子
import torch
torch.manual_seed(args.seed)#为CPU设置随机种子
torch.cuda.manual_seed(seed)#为当前GPU设置随机种子
torch.cuda.manual_seed_all(seed)#为所有GPU设置随机种子
7、结合4、5、6,在pytorch中,要使每次结果都相同可以复现,需作如下操作:
def set_seed(seed=100):
random.seed(seed)
os.environ['PYTHONHASHSEED'] = str(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed(seed)
torch.backends.cudnn.deterministic = True
8、建立ndarray数组:
np.asarray()
将结构数据转化为ndarray,主要区别在于 np.array (默认情况下)将会copy该对象,而 np.asarray 除非必要,否则不会copy该对象
9、字符串处理
str.strip([chars]): #chars -- 移除字符串头尾指定的字符序列。
返回移除字符串头尾指定的字符生成的新字符串。
10、pytorch
optimizer = torch.optim.Adam()
scheduler = torch.optim.lr_scheduler.LambdaLR()
scheduler.step()
nn.Module
torch.nn.Embedding()
nn.Parameter
nn.MSELoss
(1)torch.optim是一个实现了多种优化算法的包,大多数通用的方法都已支持,提供了丰富的接口调用,Adam()为Adam优化器
(2)lr_scheduler.LambdaLR()为学习率调整
(3)所有的optimizer都实现了step()方法,这个方法会更新所有的参数。
(4)torch.nn是专门为神经网络设计的模块化接口。nn构建于autograd之上,可以用来定义和运行神经网络。nn.Module是nn中十分重要的类,包含网络各层的定义及forward方法。
定义自已的网络:
需要继承nn.Module类,并实现forward方法。
一般把网络中具有可学习参数的层放在构造函数__init__()中,
不具有可学习参数的层(如ReLU)可放在构造函数中,也可不放在构造函数中(而在forward中使用nn.functional来代替)
只要在nn.Module的子类中定义了forward函数,backward函数就会被自动实现(利用Autograd)。
在forward函数中可以使用任何Variable支持的函数,毕竟在整个pytorch构建的图中,是Variable在流动。还可以使用if,for,print,log等python语法.
参考:https://blog.csdn.net/u012609509/article/details/81203436
(5)一个矩阵类,里面初始化了一个随机矩阵,矩阵的长是字典的大小,宽是用来表示字典中每个元素的属性向量,向量的维度根据你想要表示的元素的复杂度而定。类实例化之后可以根据字典中元素的下标来查找元素对应的向量。
参考:https://blog.csdn.net/tommorrow12/article/details/80896331
(6)一种变量,当把它赋值给一个Module时,被自动地注册为一个参数
(7)比较简单的损失函数,它计算输出和目标间的均方误差
没写完,随时补
网友评论