集成学习笔记1--导论


机器学习的一个重要的目标就是利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。数据通常由一组向量组成,这组向量中的每个向量都是一个 样本,用𝑥𝑖来表示,其中𝑖 = 1, 2, 3, . . . , 𝑁,共N个样本,每个样本𝑥𝑖 = (𝑥𝑖1, 𝑥𝑖2, . . . , 𝑥𝑖𝑝, 𝑦𝑖)共p+1个维度,前p个维度的每个维度我们称为一个 特征,最后一个维度𝑦𝑖我们称为 因变量(响应变量)。特征用来描述影响因变量的因素,如:我们要探寻身高是否会影响体重的关系的时候,身高就是一个特征,体重就是一个因变量。通常在一个数据表dataframe里面,一行表示一个样本𝑥𝑖,一列表示一个特征。
我们对数据的形式作出如下约定:
第i个样本: x i = ( x i 1 , x i 2 , . . . , x i p , y i ) T x_i = (x_{i1},x_{i2},...,x_{ip},y_i)^T xi=(xi1,xi2,...,xip,yi)T
因变量 y i = ( y 1 , y 2 , . . . , y N ) T y_i = (y_1,y_2,...,y_N)^T yi=(y1,y2,...,yN)T
第k个特征: x ( k ) = ( x k 1 , x k 2 , . . . , x N p ) T x^{(k)} = (x_{k1},x_{k2},...,x_{Np})^T x(k)=(xk1,xk2,...,xNp)T
特征矩阵 x i = ( x 1 , x 2 , . . . , x N ) T x_i = (x_1,x_2,...,x_N)^T xi=(x1,x2,...,xN)T

根据数据是否有因变量,机器学习的任务可分为:有监督学习和无监督学习。

  • 有监督学习
    给定某些特征去估计因变量,即因变量存在的时候,我们称这个机器学习任务为有监督学习。如:我们使用房间面积,房屋所在地区,环境等级等因素去预测某个地区的房价。
  • 无监督学习
    给定某些特征但不给定因变量,建模的目的是学习数据本身的结构和关系。如:我们给定某电商用户的基本信息和消费记录,通过观察数据中的哪些类型的用户彼此间的行为和属性类似,形成一个客群。注意,我们本身并不知道哪个用户属于哪个客群,即没有给定因变量。
    在这里插入图片描述

根据因变量的是否连续,有监督学习又分为回归和分类:

  • 回归
    因变量是连续型变量,如:房价,体重等。
  • 分类
    因变量是离散型变量,如:是否患癌症,西瓜是好瓜还是坏瓜等。

机器学习常用库:

应用
numpy数据分析处理
pandas数据分析处理
matplotlib.pyplot可视化
seaborn在Matplotlib上进行了更高级的API封装数据可视化库

1.1 回归

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)		#将X转换为DataFrame表形式,并将列名命名为特证名
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()

显示数据如下:
在这里插入图片描述
各个特征的相关解释:

  • 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:房价

可视化结果:
在这里插入图片描述

1.2 分类

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

#可视化
'''
enumerate():对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
np.unique():该函数是去除数组中的重复数字,并进行排序之后输出。
'''
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)"])
plt.xlabel("sepal length(cm)")
plt.ylabel("sepal width(cm)")
plt.legend(labels = [1,2,3])
plt.show()

显示数据如下:
在这里插入图片描述
各个特征的相关解释:

  • sepal length (cm):花萼长度(厘米)
  • sepal width (cm):花萼宽度(厘米)
  • petal length (cm):花瓣长度(厘米)
  • petal width (cm):花瓣宽度(厘米)

可视化结果:
在这里插入图片描述

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、付费专栏及课程。

余额充值