集成学习

机器学习之集成学习

感谢Datawhale提供的学习机会。
1.导论
首先集成学习是机器学习里面的概念,所以我们要先了解一下机器学习。什么是机器学习?机器学习的一个重要的目标就是利用数学模型来理解数据,发现数据中的规律,用
作数据的分析和预测。数据通常由一组向量组成,这组向量中的每个向量都是一个样本,我们用𝑥𝑖来表示一个样本,其中𝑖 = 1, 2, 3, . . . , 𝑁,共N个样本,每个样本𝑥𝑖 = (𝑥𝑖1, 𝑥𝑖2, . . . , 𝑥𝑖𝑝, 𝑦𝑖)共p+1个维度,前p个维度的每个维度我们称为一个特征,最后一个维度𝑦𝑖我们称为因变量(响应变量)。特征用来描述影响因变量的因素,如:我们要探寻身高是否会影响体重的关系的时候,身高就是一个特征,体重就是一个因变量。通常在一个数据表dataframe里面,一行表示一个样本𝑥𝑖,一列表示一个特征。根据数据是否有因变量,机器学习的任务可分为:有监督学习和无监督学习。
(1)有监督学习:
给定某些特征去估计因变量,即因变量存在的时候,我们称这个机器学习任务为有监督学习。如:我们使用房间面积,房屋所在地区,环境等级等因素去预测某个地区的房价。
(2)无监督学习:
给定某些特征但不给定因变量,建模的目的是学习数据本身的结构和关系。如:我们给定某电商用户的基本信息和消费记录,通过观察数据中的哪些类型的用户彼此间的行为和属性类似,形成一个客群。注意,我们本身并不知道哪个用户属于哪个客群,即没有给定因变量。
根据因变量是否连续,又可以将有监督学习分为分类(因变量是离散型变量)和回归(因变量是连续型变量)问题。
为了更好地叙述后面的内容,我们对数据的形式作出如下约定:
第i个样本:
𝑥𝑖 = (𝑥𝑖1, 𝑥𝑖2, . . . , 𝑥𝑖𝑝, 𝑦𝑖)𝑇 , 𝑖 = 1, 2, . . . , 𝑁
因变量𝑦 = (𝑦1 , 𝑦2 , . . . , 𝑦𝑁 )𝑇
第k个特征:𝑥(𝑘) = (𝑥1𝑘, 𝑥2𝑘, . . . , 𝑥𝑁𝑘)𝑇
特征矩阵𝑋 = (𝑥1, 𝑥2, . . . , 𝑥𝑁 )𝑇
在学习机器学习中,我们经常使用scikit-learn简称sklearn工具库来探索机器学习项目,下面我们开始使用sklearn来演示这几个具体的概念:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use("ggplot") 
import seaborn as sns`

1.1回归
首先,我们先来看看有监督学习中回归的例子,我们使用sklearn内置数据集Boston房价数据集。sklearn中所有内置数据集都封装在datasets对象内: 返回的对象有:
data:特征X的矩阵(ndarray)
target:因变量的向量(ndarray)
feature_names:特征名称(ndarray)

from sklearn import datasets
boston = datasets.load_boston() # 返回一个类似于字典的类
X = boston.data
y = boston.target
features = boston.feature_names
boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
boston_data.head()

在这里插入图片描述

 sns.scatterplot(boston_data['NOX'],boston_data['Price'],color="r",alpha=0.6)
plt.title("Price~NOX")
plt.show()

在这里插入图片描述
我们可以看到,数据给定任务所需要的因变量,因变量为波士顿房价Price是一个连续型变量,所以这是一个回归的例子。
1.2分类
iris数据集

from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target
features = iris.feature_names
iris_data = pd.DataFrame(X,columns=features)
iris_data['target'] = y
iris_data.head()

在这里插入图片描述

# 可视化特征
marker = ['s','x','o'] for index,c in enumerate(np.unique(y)):
 plt.scatter(x=iris_data.loc[y==c,"sepal length (cm)"],y=iris_data.loc[y==c,"sepal widt
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()

在这里插入图片描述
我们可以看到:每种不同的颜色和点的样式为一种类型的鸢尾花,数据集有三种不同类型的鸢尾花。因此因变量是一个类别变量,因此通过特征预测鸢尾花类别的问题是一个分类问题。
1.3无监督学习
我们可以使用sklearn生成符合自身需求的数据集,下面我们用其中几个函数例子来生成无因变量的数据集:
在这里插入图片描述

# 生成月牙型非凸集
from sklearn import datasets
x, y = datasets.make_moons(n_samples=2000, shuffle=True,
 noise=0.05, random_state=None) for index,c in enumerate(np.unique(y)):
 plt.scatter(x[y==c,0],x[y==c,1],s=7)
plt.show()

在这里插入图片描述

# 生成符合正态分布的聚类数据
from sklearn import datasets
x, y = datasets.make_blobs(n_samples=5000, n_features=2, centers=3) for index,c in enumerate(np.unique(y)):
 plt.scatter(x[y==c, 0], x[y==c, 1],s=7)
plt.show()

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值