专栏首页SAMshare10万+字的机器学习理论笔记&特征工程tips分享,附PDF下载

10万+字的机器学习理论笔记&特征工程tips分享,附PDF下载

随着我们在机器学习、数据建模、数据挖掘分析这条发展路上越走越远,其实越会感觉到机器学习理论知识和特征工程的重要性,这里有两本一位好友整理的学习资料,都是满满干货!分别是《machine learning knowledge》和 《Tips of feature engineering》,全文加起来超过10万字!

资料领取方式:

1.扫码关注下方 “SAMshare” 公众号

2.回复关键词1获取机器学习理论知识:MLK

3.回复关键词2获取特征工程:TIPS

SAMshare

? 《machine learning knowledge》内容摘选

目前作者更新的系列文章有12篇,每一篇都相对比较干货的,目录如下:

MLK01 | 机器学习论文搜索利器推荐

MLK02 | 如何解决机器学习树集成模型的解释性问题

MLK03 | 那些常见的特征工程

MLK04 | 机器学习的降维”打击“

MLK05 | 机器学习采样方法大全

MLK06 | 非监督学习最强攻略

MLK07 | 机器学习常见算法优缺点了解一下

MLK08 | 模型评估的一些事

MLK09 | 一文理清深度学习前馈神经网络

MLK10 | 一文理清深度学习循环神经网络

MLK11 | 一文理清集成学习知识点(Boosting&Bagging)

MLK12 | Keras 基础模型调参指南

我们看看当中的一些文章片段:

? 机器学习论文搜索利器推荐

? 树集成模型的解释性问题

目前TREE SHAP可以支持的树集成模型有XGBoost, LightGBM, CatBoost, and scikit-learn tree models,可以看看下面的demo:

import xgboost
import shap

# load JS visualization code to notebook
shap.initjs()

"""训练 XGBoost 模型,SHAP里提供了相关数据集"""

X,y = shap.datasets.boston()
model = xgboost.train({"learning_rate": 0.01}, xgboost.DMatrix(X, label=y), 100)

"""
通过SHAP值来解释预测值
(同样的方法也适用于 LightGBM, CatBoost, and scikit-learn models)
"""
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)

# 可视化解释性 (use matplotlib=True to avoid Javascript)
shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])
# visualize the training set predictions
shap.force_plot(explainer.expected_value, shap_values, X)

? 还有很多机器学习基础理论

? 《Tips of feature engineering》内容摘选

大家可以先看看目前更新到的内容明细:

项目目前更新到19节,一般来说是每天一更新,每一节都会有配套的数据集以及代码,下面我们拿几个“锦囊”来看一下!

Tip15:如何使用sklearn的多项式来衍生更多的变量?

关于这种衍生变量的方式,理论其实大家应该很早也都听说过了,但是如何在Python里实现,也就是今天在这里分享给大家,其实也很简单,就是调用sklearnPolynomialFeatures方法,具体大家可以看看下面的demo。

这里使用一个人体加速度数据集,也就是记录一个人在做不同动作时候,在不同方向上的加速度,分别有3个方向,命名为x、y、z。

关键代码

# 扩展数值特征
from sklearn.preprocessing import PolynomialFeatures

x = df[['x','y','z']]
y = df['activity']

poly = PolynomialFeatures(degree=2, include_bias=False, interaction_only=False)

x_poly = poly.fit_transform(x)
pd.DataFrame(x_poly, columns=poly.get_feature_names()).head()

就这样子简单的去调用,就可以生成了很多的新变量了。

Tip17:如何把分布修正为类正态分布?

今天我们用的是一个新的数据集,也是在kaggle上的一个比赛,大家可以先去下载一下:

下载地址:

https://www.kaggle.com/c/house-prices-advanced-regression-techniques/data

import pandas as pd
import numpy as np
# Plots
import seaborn as sns
import matplotlib.pyplot as plt

# 读取数据集
train = pd.read_csv('./data/house-prices-advanced-regression-techniques/train.csv')
train.head()

首先这个是一个价格预测的题目,在开始前我们需要看看分布情况,可以调用以下的方法来进行绘制:

sns.set_style("white")
sns.set_color_codes(palette='deep')
f, ax = plt.subplots(figsize=(8, 7))
#Check the new distribution
sns.distplot(train['SalePrice'], color="b");
ax.xaxis.grid(False)
ax.set(ylabel="Frequency")
ax.set(xlabel="SalePrice")
ax.set(title="SalePrice distribution")
sns.despine(trim=True, left=True)
plt.show()

我们从结果可以看出,销售价格是右偏,而大多数机器学习模型都不能很好地处理非正态分布数据,所以我们可以应用log(1+x)转换来进行修正。那么具体我们可以怎么用Python代码实现呢?

# log(1+x) 转换
train["SalePrice_log"] = np.log1p(train["SalePrice"])

sns.set_style("white")
sns.set_color_codes(palette='deep')
f, ax = plt.subplots(figsize=(8, 7))

sns.distplot(train['SalePrice_log'] , fit=norm, color="b");

# 得到正态分布的参数
(mu, sigma) = norm.fit(train['SalePrice_log'])

plt.legend(['Normal dist. ($\mu=$ {:.2f} and $\sigma=$ {:.2f} )'.format(mu, sigma)],
            loc='best')
ax.xaxis.grid(False)
ax.set(ylabel="Frequency")
ax.set(xlabel="SalePrice")
ax.set(title="SalePrice distribution")
sns.despine(trim=True, left=True)

plt.show()

资料领取方式:

1.扫码关注下方 “SAMshare” 公众号

2.回复关键词1获取机器学习理论知识:MLK

3.回复关键词2获取特征工程:TIPS

SAMshare

本文分享自微信公众号 - SAMshare(gh_8528ce7b7e80),作者:Samshare

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-04-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 特征锦囊:如何把分布修正为类正态分布?

    今天我们用的是一个新的数据集,也是在kaggle上的一个比赛,大家可以先去下载一下:

    Sam Gor
  • 近6万字的机器学习理论笔记分享,附PDF下载

    近期在对历史的机器学习文章进行了整理与归集,方便自己也方便他人学习知识,今天分享给大家的是一个近8万字的机器学习理论知识点文章汇集,主题为《machine le...

    Sam Gor
  • MLK | 如何解决机器学习树集成模型的解释性问题

    前些天在同行交流群里,有个话题一直在群里热烈地讨论,那就是 如何解释机器学习模型 ,因为在风控领域,一个模型如果不能得到很好的解释一般都不会被通过的,在银行里会...

    Sam Gor
  • 三星宣布将在英国开设AI研究中心,预计招募150名AI专家 | 热点

    镁客网
  • 三星自动驾驶汽车路测获批,进军无人驾驶领域

    镁客网
  • UNPv13:#第1章#简介

    概述 ? TCP本身并不提供记录结束标志:如果应用程序需要确定记录的边界,它就要自己去实现,已有一些常用的方法可供选择。从TCP套接字读取数据时,我们总...

    _gongluck
  • Spring bean 加载顺序导致的 bug 问题

    今天启动 spring boot 项目的时候,有时候会报加载不到配置文件的属性。配置文件的属性是用 @Value 获取的,属性有时候会是 null 。

    create17
  • Go net/rpc 包的深度解读和学习

    远程过程调用 (Remote Procedure Call,RPC) 是一种计算机通信协议。允许运行在一台计算机的程序调用另一个地址空间的子程序(一般是开放网络...

    aoho求索
  • python第十七课——列表生成式

    1.列表生成式: 什么是列表生成式? 它就是一串表达式,专门用于生成列表对象,当中包含一系列的业务逻辑; 结构:简介、优雅、阅读性好;比传统获取列表对象来...

    hankleo
  • 三星或将裁10%高管,并注销4.9万亿韩元存股

    据报道,在下周宣布年度高管调整时,三星电子可能会将高管人数缩减5%至10%。据悉,一些部门的高管总数缩减将达10%以上,其中就包括移动业务部门。此前就有报道称,...

    镁客网

扫码关注云+社区

领取腾讯云代金券