机器学习基础——集成学习1

  1.机器学习问题分类

  从数据集的角度看机器学习:数据集一般由自变量(x,特征)和因变量(y,标签)组成。

  根据所要处理的数据中有没有因变量,机器学习可分为有监督学习和无监督学习:

  (1)有监督学习

  指所分析的数据集中既含有自变量,也有因变量,这也是我们最常遇到的机器学习任务。

  其中,根据因变量(y)是否连续,有监督学习又可分为回归问题(y连续)和分类问题(y离散)。(还有一类是排序问题,输出y是一个序列)

  (2)无监督学习

  指所分析的数据集中只含有自变量,没有因变量,建模的目的是学习数据本身的结构和关系。如聚类分析,降维分析等,这不是我们讨论的重点。

  (3)强化学习

  实际上,我认为强化学习应该是独立于上面两类的一类新的问题,这个有机会再介绍。

  2.回归

  (1)首先我们可以导入Boston数据集作为回归问题

  数据集中特征含义具体可以自查~

  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() #查看数据前几行

  (2)绘图分析

  绘图的基础就不说了,这里介绍学到的两个新功能:运行时间和绘图风格

  %%time #可以用来查看程序运行的时间

  %matplotlib inline

  plt.style.use("ggplot") #将绘图风格调整为ggplot风格

  普通sns.scatterplot()作图效果(以分析Price~NOX)为例:

  NOX:一氧化氮浓度(/千万分之一)

  二者的绘图效果自己去感受,我觉得后者绘图逼格略高,有质感。但从绘制时间上来说,在美观的同时,多花了一倍的时间(178ms)。

  可以明显看出:在一氧化氮浓度低的地方的房价较高,反之相反,这符合直观常识,毕竟污染小的区域房源竞争激烈!

  这个关系更加明显:犯罪率越低的区域,房价自然越高,符合常识。

  3.分类

  (1)导入iris数据集作分析:

  from sklearn import datasets

  iris = datasets.load_iris()

  iris数据集中的特征解释:

  sepal length (cm):花萼长度(厘米)

  sepal width (cm):花萼宽度(厘米)

  petal length (cm):花瓣长度(厘米)

  petal width (cm):花瓣宽度(厘米)

  (2)绘图观察特征

  # 可视化特征

  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() 大连人流哪家好 mobile.fkyy120.net/

  plt.show()

  代码中,介绍两个语法:

  1)enumerate()是python的内置函数,对一个可迭代对象,用于既要遍历索引又要遍历元素时。enumerate还可以接收第二个参数,用于指定索引起始值。

  2)unique( )用于去除重复值,保留唯一值

  每种不同的颜色和点的样式为一种类型的鸢尾花,数据集有三种不同类型的鸢尾花。

  4.无监督学习

  我们可以使用sklearn生成符合自身需求的数据集,这些数据集没有因变量,可以用来模拟无监督学习。

  注:无监督数据样本生成可访问sklearn的API:

  sklearn-API: Samples generator.

  (1)生成无监督数据,并可视化:

  # 生成月牙型非凸集

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

  (2)通过make_checkerboard函数生成一个棋盘数据集:

  # 生成棋盘数据集

  from sklearn import datasets

  n_clusters = (4, 3)

  data, rows, columns = datasets.make_checkerboard(

  shape=(300, 300), n_clusters=n_clusters, noise=10,

  shuffle=False, random_state=0)

  plt.matshow(data, cmap=plt.cm.Blues)

  plt.title("Original dataset")

请使用浏览器的分享功能分享到微信等