DataWhale集成学习笔记(一)

该学习内容基于DataWhale的开源内容

1 机器学习基础知识

机器学习的一个重要的目标就是利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。
根据数据是否有因变量,机器学习可以分为有监督和无监督学习,二者都含有数据的特征向量;但是相比无监督,有监督有因变量,有预测的结果,也就是x和y都已知,可以根据已知标签进行学习;无监督学习则无因变量,主要学习寻找数据中本身的结构和关系,比如学习数据的分布等。
根据因变量的是否连续,有监督学习又分为回归分类:回归的因变量是连续型的;分类的因变量是分散型的。

1.1 回归

利用sklearn中内置的Boston房价数据集进行回归练习,sklearn内置的数据集都封装在datasets对象里,返回对象有:

  • data:特征X的矩阵(ndarray)
  • target:因变量的向量(ndarray)
  • feature_names:特征名称(ndarray)
    在进行回归学习前,为了对数据进行处理,先导入相关科学计算包。
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline 
plt.style.use("ggplot")      
import seaborn as sns

然后导入datasets对象,一边利用其中的数据集。

from sklearn import datasets

然后获得Boston房价数据集。

boston = datasets.load_boston()  # 返回一个类似于字典的类

返回的boston对象中包含data、target和feature_names,作为字典的关键字,因此分别提取出相关内容。

X = boston.data                                # 获得特征矩阵
y = boston.target                              # 获得标签
features = boston.feature_names    # 获得特征的名称

将数据组织为DataFrame格式,列用features命名,同时加入标签,命名为价格Price,同时通过head()函数查看数据的头部信息

boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
boston_data.head()

在这里插入图片描述
各个特征的相关解释:

  • CRIM:各城镇的人均犯罪率
  • ZN:规划地段超过25,000平方英尺的住宅用地比例
  • INDUS:城镇非零售商业用地比例
  • CHAS:是否在查尔斯河边(=1是)
  • NOX:一氧化氮浓度(/千万分之一)
  • RM:每个住宅的平均房间数
  • AGE:1940年以前建造的自住房屋的比例
  • DIS:到波士顿五个就业中心的加权距离
  • RAD:放射状公路的可达性指数
  • TAX:全部价值的房产税率(每1万美元)
  • PTRATIO:按城镇分配的学生与教师比例
  • B:1000(Bk - 0.63)^2其中Bk是每个城镇的黑人比例
  • LSTAT:较低地位人口
  • Price:房价

通过seaborn画出CRIm特征与价格Price之间的分布关系图:

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

在这里插入图片描述

画出其余特征与价格之间的分布关系图:

plt.figure()
for i,f in enumerate(features[1:]):
    plt.subplot(3,4,i+1)
    sns.scatterplot(boston_data[f],boston_data['Price'],color="r",alpha=0.6)
    plt.title("Price~"+f)
plt.show()

在这里插入图片描述

从中可以看出,因变量波士顿房价Price是一个连续型变量,因此可以用回归进行学习。

1.2 分类

分类问题使用鸢尾花数据集。鸢尾花数据集一共包含5个变量,其中4个特征变量,1个目标分类变量。共有150个样本,目标变量为 花的类别 其都属于鸢尾属下的三个亚属,分别是山鸢尾 (Iris-setosa),变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。包含的三种鸢尾花的四个特征,分别是花萼长度(cm)、花萼宽度(cm)、花瓣长度(cm)、花瓣宽度(cm),这些形态特征在过去被用来识别物种。

变量描述
sepal length花萼长度(cm)
sepal width花萼宽度(cm)
petal length花瓣长度(cm)
petal width花瓣宽度(cm)

target 鸢尾的三个亚属类别

类别数量
‘setosa’(0)50
‘versicolor’(1)50
‘virginica’(2)50

同样,先导入数据集,并获得数据集的特征数据、标签数据和特征名称,并查看数据信息。

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 width (cm)"],alpha=0.8,label=c,marker=marker[c])
plt.xlabel("sepal length (cm)")
plt.ylabel("sepal width (cm)")
plt.legend()
plt.show()

在这里插入图片描述
该数据集的因变量是一个类别变量,因此通过特征预测鸢尾花类别的问题是一个分类问题。

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=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()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值