用sklearn库中的算法对数据集进行训练和auc评估(个人学习笔记)

本文为个人学习笔记,仅供学习参考,欢迎讨论,要是有哪里写的不对或有疑问的欢迎讨论。

题目:运用已给数据集进行模型训练,使用逻辑回归、决策树、随机森林和AdaBoost几个算法进行训练,并打印各个算法训练后的auc评价指标。

文章目录

  • 1.导入数据集
    • ①read_csv(): 读取数据并以某字符分隔。
    • ②merge(): 合并
    • ③drop(): 删除行或列
    • ④tolist():将数组或矩阵转换为列表
    • ⑤train_test_split():从样本中随机的按比例选取train data和test data
    • 第一部分导入数据集整体代码:
  • 2.用分类算法对数据集进行训练及测试
    • ①朴素贝叶斯算法:
    • ②逻辑回归算法:
    • ③决策树:
    • ④随机森林:
    • ⑤AdaBoost算法:
    • ⑥KNN算法(用iris训练集作为训练样本时可测试看看):
  • 3.对代码进行迭代
  • 4.完整代码展示
  • 5.结果展示
  • 6.参考链接

1.导入数据集

用到的方法有:read_csv()、merge()、drop()、tolist()、train_test_split()

以下方法的详细参数和用法可使用**help(方法名)**的方法查看

①read_csv(): 读取数据并以某字符分隔。

常用参数:

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")

②merge(): 合并

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")

③drop(): 删除行或列

常用形式(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)

④tolist():将数组或矩阵转换为列表

本题应用:

# 将data_label的内容转换为列表方便遍历
columns = data_label.columns.tolist()

⑤train_test_split():从样本中随机的按比例选取train data和test data

所需头文件:

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

你可能感兴趣的:(python,机器学习)