MLSR package

Submodules

MLSR.data module

class MLSR.data.DataSet(filename: Optional[str] = None, encode='gbk')[源代码]

基类:object

数据处理的工具类

convert_to_ssl()[源代码]

将数据集转为半监督任务用的数据集 将弱标签作为一个新的特征,并且删去非困难的数据

Returns: DataSet对象

static data_augment(n: int = 1000, filename: Optional[str] = None)[源代码]

数据增强 一般数据集中没有非经济困难的,但是这样的模型并不够鲁棒, 所以我们需要按照一定规则生成非困难的样本,增强数据 Notes: 收入肯定不是正态分布的,但是想不好用什么,暂时采用对数正态,然后把低保线设在5%分位数

参数
  • n – 生成的数据条数

  • filename – 生成数据的保存路径

Returns: DataSet对象

static do_accident(s: pandas.Series)[源代码]

识别突发事件情况 部分处理思路如下: 在cut_type中找寻如下pattern,并总结出每个人发生什么事情: 每一个人可能同时做多件事情,而这多件事情肯定是按顺序排列的,这些事情之间一定不出现另一个人名 无论在哪里出现divorce,一定为父母离异,但是如果出现在“父母”之后,则需要把这个“父母”与divorce绑定 这里jieba无法将“父母”、“父/母”、“父(母)”、“父亲(母亲)”分开,所以需要加一个判断条件,会用在后面无业、患病、去世中 一个人之后可能跟着多个illness,应全部与其绑定。若人是祖父母,则统计其是否患病;父母则看是否有重病,且应将父母辨别开;兄弟姐妹只统计重疾。 有可能出现人 -> illness ->dead。所有人都有可能dead,dead需要与之前最近的一个人或连续的多个人绑定,但只统计父或母去世。

参数

s – 待处理的pandas.Series

Returns:处理后得到的哑变量特征,pandas.Dataframe格式

static do_education(s: pandas.Series) → pandas.DataFrame[源代码]

对每一行用jieba进行分词,对结果进行遍历,搜索关键词并记录其词性,记为cut_type 在cut_type中找寻如下pattern,并总结出大学阶段、高中阶段、义务教育阶段各有多少人: 个数和家庭成员都有可能出现,但个数为家庭成员前一个词,因此先检测个数再紧跟着检测家庭成员 年级和学校都有可能出现,但年级一定出现在学校之后,因此先检测学校再检测年级 个数 -> 学校/年级/学校&年级 -> 非学校或年级:这几个人都属于该学校 (个数 ->)家庭成员 -> 学校/年级/学校&年级 -> 非学校或年级:这几个人都属于该学校 (个数 ->)家庭成员 -> 学校/年级/学校&年级 -> 学校/年级/学校&年级 -> 非学校或年级:首先保证两个学校阶段相同,则这种家庭成员分别属于这个阶段;否则人工处理

参数

s – 输入的pandas.Series

Returns:

static do_ethnic_group(s: pandas.Series) → pandas.Series[源代码]

识别是否为少数民族,缺失值视为汉族

参数

s – 待处理的特征,pandas.Series

Returns:返回pandas.Series

static do_household(s: pandas.Series) → pandas.Series[源代码]

识别家庭人口数量,缺失则视为三口之家

参数

s – 待处理的特征,pandas.Series

Returns:返回pandas.Series

static do_income(data: pandas.DataFrame, fill_to_no_income: bool = True) → pandas.DataFrame[源代码]

家庭主要经济来源

参数
  • data

  • fill_to_no_income

Returns:

static do_loan(s: pandas.Series)[源代码]

识别是否贷款,缺失值视为无贷款

Notes: 只识别生源地和校园地助学贷款,其他贷款不在认定考虑范围内 :param s: 待处理的特征,pandas.Series

Returns:返回pandas.Series

static do_nation_policy(data: pandas.DataFrame) → pandas.DataFrame[源代码]

处理“享受国家政策资助情况”一列

参数

data – 待处理的pandas.DataFrame,建议传入所有特征

Returns:pandas.DataFrame,分类哑变量

static do_resident_type(s: pandas.Series) → pandas.Series[源代码]

识别户口类型,缺失值视为城镇户口

参数

s – 待处理的特征,pandas.Series

Returns:返回pandas.Series

static do_scholarship(s: pandas.Series) → pandas.DataFrame[源代码]

识别在校期间获得助学金情况

参数

s – 待处理的特征,pandas.Series

Returns:返回三个特征的pandas.DataFrame,助学金个数(离散),助学金总金额(连续), 获得的国家助学金类型(分类变量,0为未获得,1为国家二等助学金,2为国家一等助学金)

generate_feature()[源代码]

按顺序将原始特征转为可使用的特征,并将特征重命名为f1,f2,f3…. Returns:处理好的DataSet对象,特征名映射在features_name属性中

merge(y)[源代码]

将一个DataSet加入当前的DataSet尾部

参数

y – 要加入的DataSet

Returns: 新的DataSet

reset_index()[源代码]

将数据及重新标号

Notes: 调用pandas.reset_index时inplace为True

Returns: 重新标号后的DataSet

shuffle_and_pick = DeprecationWarning(<function DataSet.shuffle_and_pick>)
special_init = DeprecationWarning(<function DataSet.special_init>)
split_by_weak_label(reset_index: bool = True)[源代码]

将初次分类的得到的结果中,评为特别困难和一般困难的分开挑出来

Returns: (DataSet, DataSet) 两个DataSet对象,第一个是特别困难,第二个是一般困难

static static_merge(x, y)[源代码]

将DataSet y拼接到DataSet x后面,返回一个新的数据集

参数
  • x – DataSet

  • y – DataSet

Returns: 新的DataSet

MLSR.plot module

MLSR.plot.plot_confusion_matrix(cm, classes, filename, title='Confusion matrix', cmap=matplotlib.pyplot.cm.Blues)[源代码]

绘制混淆矩阵,如果本地有图形界面或

参数
  • cm – 混淆矩阵,numpy.ndarray

  • classes – 类名

  • filename – 保存文件路径

  • title – 标题

  • cmap – 使用的色系

MLSR.plot.plot_roc(model, X, y, filename)[源代码]

画roc图,不过sklearn只支持二分类roc,三分类画不了

参数
  • model – 模型

  • X – 特征

  • y – 标签

  • filename – 图片保存路径

MLSR.plot.plot_tsne(data: MLSR.data.DataSet, filename: str, n_iter: int = 1000)[源代码]

tSNE降维绘图

参数
  • data – 数据集

  • filename – 图片保存路径

  • n_iter – 迭代次数

Returns:

MLSR.plot.plot_tsne_ssl(data: MLSR.data.DataSet, filename: str, n_iter: int = 1000)[源代码]

半监督数据集的tSNE降维绘图

参数
  • data – 数据集

  • filename – 图片保存路径

  • n_iter – 迭代次数

MLSR.primary module

MLSR.primary.do_decision_tree(dataset: MLSR.data.DataSet, log_dir: str = '../log', grid: Optional[dict] = None)[源代码]

训练决策树

参数
  • grid – 超参数搜索空间的网格,不填则使用默认搜索空间

  • dataset – 输入数据集,将会按照0.7, 0.3比例分为训练集和测试集

  • log_dir – 输出结果文件的目录

Returns:返回训练好的GridSearchCV模型

MLSR.primary.do_logistic(dataset: MLSR.data.DataSet, log_dir: str = '../log', grid: Optional[dict] = None)[源代码]

训练逻辑回归

参数
  • grid – 超参数搜索空间的网格,不填则使用默认搜索空间

  • dataset – 输入数据集,将会按照0.7, 0.3比例分为训练集和测试集

  • log_dir – 输出结果文件的目录

Returns:返回训练好的GridSearchCV模型

MLSR.primary.do_naive_bayes(dataset: MLSR.data.DataSet, log_dir: str = '../log', grid: Optional[dict] = None)[源代码]

训练朴素贝叶斯

参数
  • grid – 超参数搜索空间的网格,不填则使用默认搜索空间

  • dataset – 输入数据集,将会按照0.7, 0.3比例分为训练集和测试集

  • log_dir – 输出结果文件的目录

Returns:返回训练好的GridSearchCV模型

MLSR.primary.do_random_forest(dataset: MLSR.data.DataSet, log_dir: str = '../log', grid: Optional[dict] = None)[源代码]

训练随机森林

参数
  • grid – 超参数搜索空间的网格,不填则使用默认搜索空间

  • dataset – 输入数据集,将会按照0.7, 0.3比例分为训练集和测试集

  • log_dir – 输出结果文件的目录

Returns:返回训练好的GridSearchCV模型

MLSR.primary.do_svm(dataset: MLSR.data.DataSet, log_dir: str = '../log', grid: Optional[dict] = None)[源代码]

训练支持向量机

参数
  • grid – 超参数搜索空间的网格,不填则使用默认搜索空间

  • dataset – 输入数据集,将会按照0.7, 0.3比例分为训练集和测试集

  • log_dir – 输出结果文件的目录

Returns:返回训练好的GridSearchCV模型

MLSR.primary.do_xgb(dataset: MLSR.data.DataSet, log_dir: str = '../log', grid: Optional[dict] = None)[源代码]

训练Xgboost

参数
  • grid – 超参数搜索空间的网格,不填则使用默认搜索空间

  • dataset – 输入数据集,将会按照0.7, 0.3比例分为训练集和测试集

  • log_dir – 输出结果文件的目录

Returns:返回训练好的GridSearchCV模型

MLSR.primary.grid_search_and_result(Xtrain: pandas.DataFrame, ytrain: pandas.Series, Xtest: pandas.DataFrame, ytest: pandas.Series, pipe: sklearn.pipeline.Pipeline, grid: dict, log_dir: str, score=None, verbose: int = 2, k: int = 5, fit_params: Optional[dict] = None)[源代码]

交叉验证网格搜索,测试集和训练集得分,混淆矩阵和ROC曲线绘制

参数
  • Xtrain – 训练集特征

  • ytrain – 训练集标签

  • Xtest – 测试集特征

  • ytest – 测试集标签

  • pipe – 模型管道

  • grid – 超参数搜索空间

  • log_dir – 训练结果输出目录,注意一定要先创建该目录

  • score – 评分指标,默认使用f1和acc,最后用f1 refit

  • verbose – 日志级别,0为静默

  • k – 交叉验证折数

  • fit_params – 训练时参数

Returns: 训练好的GridSearchCV模型

MLSR.ssl module

MLSR.ssl.do_tsvm(data: MLSR.data.DataSet, log_dir: str = '../log', grid: Optional[dict] = None)[源代码]

Transductive Support Vector Machine

参数
  • data – 输入数据DataSet对象

  • grid – 超参数搜索空间的网格,不填则使用默认搜索空间

  • log_dir – 输出结果文件的目录

Returns:返回训练好的GridSearchCV模型

MLSR.ssl.grid_search_and_result_ssl(Xtrain: numpy.ndarray, ytrain: numpy.ndarray, Xtest: numpy.ndarray, ytest: numpy.ndarray, pipe: sklearn.pipeline.Pipeline, grid: dict, log_dir: str, score=None, verbose: int = 2, k: int = 5)[源代码]

交叉验证网格搜索,测试集和训练集得分,混淆矩阵和ROC曲线绘制

参数
  • Xtrain – 训练集特征

  • ytrain – 训练集标签

  • Xtest – 测试集特征

  • ytest – 测试集标签

  • pipe – 模型管道

  • grid – 超参数搜索空间

  • log_dir – 训练结果输出目录,注意一定要先创建该目录

  • score – 评分指标,默认使用f1和acc,最后用f1 refit

  • verbose – 日志级别,0为静默

  • k – 交叉验证折数

Returns: 训练好的GridSearchCV模型

Module contents