集成学习task1
回归
回归分析是通过建立数学模型来研究变量与变量之间的内在关系的一种数学方法。
- 种类
- 按照自变量的数量|
- 一元回归
- 多元回归
- 自变量与因变量之间线性关系|
- 线性回归
- 非线性回归
- 按照自变量的数量|
例子
首先,我们先来看看有监督学习中回归的例子,我们使用sklearn内置数据集Boston房价数据集。sklearn中所有内置数据集都封装在datasets对象内| 返回的对象有|
from sklearn import datasets
boston = datasets.load_boston()
boston.keys()
#dict_keys(['data', 'target', 'feature_names', 'DESCR', 'filename'])分别对应自变量、因变量、特征名称 、描述和文件名
'''
{'data': array([[6.3200e-03, 1.8000e+01, 2.3100e+00, ..., 1.5300e+01, 3.9690e+02,
4.9800e+00],
[2.7310e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9690e+02,
9.1400e+00],
[2.7290e-02, 0.0000e+00, 7.0700e+00, ..., 1.7800e+01, 3.9283e+02,
4.0300e+00],
...,
[6.0760e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,
5.6400e+00],
[1.0959e-01, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9345e+02,
6.4800e+00],
[4.7410e-02, 0.0000e+00, 1.1930e+01, ..., 2.1000e+01, 3.9690e+02,
7.8800e+00]]),
'target': array([24. , 21.6, 34.7, 33.4, 36.2, 28.7, 22.9, 27.1, 16.5, 18.9, 15. ,
18.9, 21.7, 20.4, 18.2, 19.9, 23.1, 17.5, 20.2, 18.2, 13.6, 19.6,
......,
20.6, 21.2, 19.1, 20.6, 15.2, 7. , 8.1, 13.6, 20.1, 21.8, 24.5,
23.1, 19.7, 18.3, 21.2, 17.5, 16.8, 22.4, 20.6, 23.9, 22. , 11.9]),
'feature_names': array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD',
'TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7'),
'DESCR': ".. _boston_dataset:\n\nBoston house........University of Massachusetts, Amherst. Morgan Kaufmann.\n",
'filename': '/home/mcq/anaconda3/lib/python3.8/site-packages/sklearn/datasets/data/boston_house_prices.csv'}
'''
X = boston.data
y = boston.target
features = boston.feature_names
boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
boston_data.head()
变量名 | 解释 |
---|---|
CRIM | 各城镇的人均犯罪率 |
ZN | 规划地段超过25,000平方英尺的住宅用地比例 |
INDUS | 城镇非零售商业用地比例 |
CHAS | 是否在查尔斯河边(=1是) |
NO | 一氧化氮浓度(/千万分之一) |
RM | 每个住宅的平均房间数 |
AGE | 1940年以前建造的自住房屋的比例 |
DIS | 到波士顿五个就业中心的加权距离 |
RAD | 放射状公路的可达性指数 |
TAX | 全部价值的房产税率(每1万美元) |
PTRATIO | 按城镇分配的学生与教师比例 |
B | 1000(Bk - 0.63)^2其中Bk是每个城镇的黑人比例 |
LSTAT | 较低地位人口 |
Price | 房价 |
观察数据
boston_data.Price.plot(kind='kde')#概率密度函数
以NOX变量为例,它与要预测的因变量Price的关系如图中所示,图中直线为拟合直线
分类
与回归问题过程类似,区别在于预测的因变量非连续型变量而是离散型变量
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()
# 可视化特征
plt.figure(figsize=(16,10), dpi= 80)
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()
从上图可以看出,鸢尾花数据集是一个用于分类任务的数据集。
无监督学习
我们可以使用sklearn生成符合自身需求的数据集,下面我们用其中几个函数例子来生成无因变量的数据集:
接口名 | 描述 | 中文描述 |
---|---|---|
datasets.make_biclusters(shape, n_clusters, *) | Generate an array with constant block diagonal structure for biclustering. | 生成一个常数块对角线结构的数组用于双聚簇。 |
datasets.make_blobs([n_samples, n_features, …]) | Generate isotropic Gaussian blobs for clustering. | 生成各向同性高斯blobs用于聚类。 |
datasets.make_checkerboard(shape, n_clusters, *) | Generate an array with block checkerboard structure for biclustering. | 生成一个具有块棋盘结构的数组用于双簇。 |
datasets.make_circles([n_samples, shuffle, …]) | Make a large circle containing a smaller circle in 2d. | 在2d中制作一个大圆包含一个小圆。 |
datasets.make_classification([n_samples, …]) | Generate a random n-class classification problem. | 生成一个随机n类分类问题。 |
datasets.make_friedman1([n_samples, …]) | Generate the “Friedman #1” regression problem. | 生成“Friedman #1”回归问题。 |
datasets.make_friedman2([n_samples, noise, …]) | Generate the “Friedman #2” regression problem. | 生成“Friedman #2”回归问题。 |
datasets.make_friedman3([n_samples, noise, …]) | Generate the “Friedman #3” regression problem. | 生成“Friedman #3”回归问题。 |
datasets.make_gaussian_quantiles(*[, mean, …]) | Generate isotropic Gaussian and label samples by quantile. | 生成各向同性高斯分布,用分位数标记样本。 |
datasets.make_hastie_10_2([n_samples, …]) | Generates data for binary classification used in Hastie et al. | 生成用于Hastie等人的二进制分类的数据。 |
datasets.make_low_rank_matrix([n_samples, …]) | Generate a mostly low rank matrix with bell-shaped singular values. | 生成一个具有钟形奇异值的低秩矩阵。 |
datasets.make_moons([n_samples, shuffle, …]) | Make two interleaving half circles. | 做两个相交的半圆。 |
datasets.make_multilabel_classification([…]) | Generate a random multilabel classification problem. | 生成一个随机的多标签分类问题。 |
datasets.make_regression([n_samples, …]) | Generate a random regression problem. | 生成一个随机回归问题。 |
datasets.make_s_curve([n_samples, noise, …]) | Generate an S curve dataset. | 生成S曲线数据集。 |
datasets.make_sparse_coded_signal(n_samples, …) | Generate a signal as a sparse combination of dictionary elements. | 以字典元素的稀疏组合生成信号 |
datasets.make_sparse_spd_matrix([dim, …]) | Generate a sparse symmetric definite positive matrix. | 生成一个稀疏对称定正矩阵 |
datasets.make_sparse_uncorrelated([…]) | Generate a random regression problem with sparse uncorrelated design. | 生成一个稀疏不相关设计的随机回归问题 |
datasets.make_spd_matrix(n_dim, *[, …]) | Generate a random symmetric, positive-definite matrix. | 生成一个随机对称的正定矩阵 |
datasets.make_swiss_roll([n_samples, noise, …]) | Generate a swiss roll dataset. | 生成一个瑞士卷数据集 |
举例