Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习

文章内容参考:https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning

1.0 机器学习:

机器学习的一个重要的目标就是利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。数据通常由一组向量组成,这组向量中的每个向量都是一个样本,用来表示一个样本,其中=1,2,3,...,,共N个样本,每个样本=(1,2,...,,),共p+1个维度,前p个维度的每个维度我们称为一个特征,最后一个维度称为因变量(响应变量)。特征用来描述影响因变量的因素,如:要探寻身高是否会影响体重的关系的时候,身高就是一个特征,体重就是一个因变量。通常在一个数据表dataframe里面,一行表示一个样本,一列表示一个特征。

Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习_第1张图片

图1 数据的格式


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

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

简单点来说,有监督学习即数据有y,无监督学习没有y。

 

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

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

Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习_第2张图片

图2 机器学习的分类

 

在学习机器学习中,我们经常使用scikit-learn简称sklearn工具库来探索机器学习项目,下面我们开始使用sklearn来演示这几个具体的概念。

1.1 回归:

在回归分析中,使用sklearn内置数据集Boston房价数据集。sklearn中所有内置数据集都封装在datasets对象内: 返回的对象有:

  • data:特征X的矩阵(ndarray)
  • target:因变量的向量(ndarray)
  • feature_names:特征名称(ndarray)
from sklearn import datasets       #从sklearn中导入datasets,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()                  #展示前5行数据

 

Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习_第3张图片

图3 Boston数据前5行内容

 

该数据中各个特征的相关解释:

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

 

#以“NOX”和“Price”作为数据绘图
sns.scatterplot(boston_data['NOX'],boston_data['Price'],color="r",alpha=0.6)
plt.title("Price~NOX")
plt.show()

Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习_第4张图片

图4 以NOX和Price为数据作图

根据图可以看出,因变量y是一个连续型变量,所以以该数据构建的模型应为回归型模型。

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

Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习_第5张图片

图5 鸢尾花数据前5行

该数据为分类型数据,因变量y实际上有三种类型,0,1,2,用来表示不同类型的鸢尾花。但是该数据的前五行无法看出该数据的类型,把数据扩展到100行试试:

Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习_第6张图片

图6 鸢尾花数据前100行

我们发现,在该数据的后面,出现了因变量y为1的情况。

鸢尾花数据集各个特征的相关解释:

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

 

使用鸢尾花数据集绘图:

# 可视化特征
marker = ['s','x','o']
#其中“c”表示鸢尾花类型(有0,1,2,3这种种类)
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()

Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习_第7张图片

图7 鸢尾花数据集可视化结果

可以看到:每种不同的颜色和点的样式为一种类型的鸢尾花,数据集有三种不同类型的鸢尾花。因此因变量是一个类别变量,因此通过特征预测鸢尾花类别的问题是一个分类问题。

 

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

Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习_第8张图片

图8 月牙非凸集

# 生成符合正态分布的聚类数据
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()

Datawhale第23期组队学习—集成学习—task1—回归、分类、无监督学习_第9张图片

图9 正态分布数据

你可能感兴趣的:(集成学习,机器学习,python,人工智能)