本文为个人学习笔记,仅供学习参考,欢迎讨论,要是有哪里写的不对或有疑问的欢迎讨论。
题目:运用已给数据集进行模型训练,使用逻辑回归、决策树、随机森林和AdaBoost几个算法进行训练,并打印各个算法训练后的auc评价指标。
用到的方法有:read_csv()、merge()、drop()、tolist()、train_test_split()
以下方法的详细参数和用法可使用**help(方法名)**的方法查看
常用参数:
filepath_or_buffer :放入要打开的文件地址或文件名(文件与py文件在同一文件夹下可直接用文件名调用)。可以是URL,常用URL类型有:http, ftp, s3, and file.
sep:以某个符号为分隔符。默认以’,’(逗号)为分隔。
compression(本例中没用到):打开文件后的压缩方式。默认为‘infer’。如果使用infer参数,则使用 gzip, bz2, zip或者解压文件名中以‘.gz’, ‘.bz2’, ‘.zip’, or ‘xz’这些为后缀的文件,否则不解压。置为None则不解压。(可选参数有:‘infer’, ‘gzip’, ‘bz2’, ‘zip’, ‘xz’, None)
本题应用:
# 读取文件并以'\t'分割
# 此处"train_agg.csv"和"train_label.csv"均为文件名,我将该文件与我的py文件放入同一文件夹下了已经
data = pd.read_csv("train_agg.csv", sep="\t")
label = pd.read_csv("train_label.csv",sep="\t")
Pandas 提供了多种将 Series、DataFrame 对象组合在一起的功能,用索引与关联代数功能的多种设置逻辑可执行连接(join)与合并(merge)操作。
常用参数:
left : DataFrame
right : DataFrame or named Series
how : 要执行的合并类型。(可选参数有:‘left’, ‘right’, ‘outer’, ‘inner’)默认为‘inner’
on :要加入的列或索引级别名称。这些必须在两个DataFrame中都可以找到。如果on为None且不合并索引,则默认为两个DataFrame中列的交集。
本题应用:
# 'USRID' 为文件中一个列的名称
data_label = data.merge(label, how="left", on="USRID")
常用形式(eg):
df.drop([“列名”],axis=1)
df.drop(columns=[“列名”])
常用参数:
axis : 是从索引(0或“索引”)还是从列(1或“列”)删除标签。(axis = 0 为行,axis = 1为列)
inplace : 默认为False。如果为True,则执行就地操作并返回None。
本题应用:
# 删除 'USRID' 这列
data_label.drop(['USRID'],axis = 1, inplace = True)
本题应用:
# 将data_label的内容转换为列表方便遍历
columns = data_label.columns.tolist()
所需头文件:
from sklearn.model_selection import train_test_split
常用参数:
train_data:所要划分的样本特征集
train_target:所要划分的样本结果
test_size:样本占比,如果是整数的话就是样本的数量
random_state:是随机数的种子。
stratify: 如果不是None,则将数据用作类标签以分层方式拆分。
本题应用:
return train_test_split(data_array, label_array, test_size=0.25, random_state=10,
stratify=label_array)
def load_data():
# 导入数据集
data = pd.read_csv("train_agg.csv", sep="\t")
label = pd.read_csv("train_label.csv",sep="\t")
data_label = data.merge(label, how="left", on="USRID")
# 得到训练集和测试集
data_label.drop(['USRID'],axis = 1, inplace = True)
columns = data_label.columns.tolist()
# 遍历列表读取数据
feature_columns = [i for i in columns if