【2021.03--集成学习(上)】机器学习的三大主要任务

本文介绍了机器学习的基本概念,包括有监督学习、无监督学习及其应用场景。通过波士顿房价回归和鸢尾花分类实例,展示了如何使用sklearn进行数据分析与模型训练。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本次 DataWhale 第二十三期组队学习,其开源内容的链接为:https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning

1.导论

1.机器学习的一个重要的目标就是利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。

2.数据通常由一组向量组成,这组向量中的每个向量都是一个样本,同时每个样本包含特征,但不一定包含因变量。根据有无因变量,可以将机器学习分为有监督学习无监督学习

  • 根据因变量是否连续,有监督学习又可以分为回归分类

约定数据的表达形式:

第i个样本:xi=(xi1,xi2,...,xip,yi)T,i=1,2,...,Nx_i=(x_{i1},x_{i2},...,x_{ip},y_i)^T,i=1,2,...,Nxi=(xi1,xi2,...,xip,yi)T,i=1,2,...,N
因变量:y=(y1,y2,...,yN)Ty=(y_1,y_2,...,y_N)^Ty=(y1,y2,...,yN)T
第k个特征:x(k)=(x1k,x2k,...,xNk)Tx^{(k)}=(x_{1k},x_{2k},...,x_{Nk})^Tx(k)=(x1k,x2k,...,xNk)T
特征矩阵:X=(x1,x2,...,xN)TX=(x_1,x_2,...,x_N)^TX=(x1,x2,...,xN)T

# 引入相关科学计算包
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)
  • 该对象中filename等属性,但是一般不会用到。
# 1.1回归
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()
CRIMZNINDUSCHASNOXRMAGEDISRADTAXPTRATIOBLSTATPrice
00.0063218.02.310.00.5386.57565.24.09001.0296.015.3396.904.9824.0
10.027310.07.070.00.4696.42178.94.96712.0242.017.8396.909.1421.6
20.027290.07.070.00.4697.18561.14.96712.0242.017.8392.834.0334.7
30.032370.02.180.00.4586.99845.86.06223.0222.018.7394.632.9433.4
40.069050.02.180.00.4587.14754.26.06223.0222.018.7396.905.3336.2

其中 feature_names 返回的结果是:array([‘CRIM’, ‘ZN’, ‘INDUS’, ‘CHAS’, ‘NOX’, ‘RM’, ‘AGE’, ‘DIS’, ‘RAD’,‘TAX’, ‘PTRATIO’, ‘B’, ‘LSTAT’], dtype=’<U7’)

可以看出,这些都是数据集中属性的名字。

我们可以看出,该任务的因变量 Price 是一个连续变量,因此是一个回归问题

有关波士顿房价分析的文章:

  • https://blog.csdn.net/weixin_39789646/article/details/111662291
  • https://www.jianshu.com/p/f36bdecbbd9a

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()
sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)target
05.13.51.40.20
14.93.01.40.20
24.73.21.30.20
34.63.11.50.20
45.03.61.40.20
# 可视化特征
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 width (cm)"],alpha=0.8,label=c,marker=marker[c])
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()

在这里插入图片描述

可以看出鸢尾花数据集的因变量是类别变量,因此,这是一次分类问题。

# enumerate 小例子
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
    print(i, element)
0 one
1 two
2 three
# 此处绘制散点图就是对各个类别进行绘制的
for index,c in enumerate(np.unique(y)):
    print(index, c)
0 0
1 1
2 2

1.3 无监督学习

我们可以使用sklearn生成符合自身需求的数据集,下面我们用其中几个函数例子来生成无因变量的数据集:
https://scikit-learn.org/stable/modules/classes.html?highlight=datasets#module-sklearn.datasets
在这里插入图片描述

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

plt.show()

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值