集成学习(上)Task01:熟悉机器学习的主要任务

DataWhale集成学习(上)Task01:熟悉机器学习的主要任务

  • 1 什么是机器学习
  • 2 有监督学习导论
    • 2.1 回归
    • 2.2 分类

这算是我第一次正式、系统学习【机器学习】和【集成学习】,言外之意我就是个小白(交通专业,不过对用python进行数据分析还是有基础的)~~关于打卡,我只想把自己最关心的、对我最有价值的部分提取出来,一方面算作给自己的回忆,另一方面也算做给和我同样水平的小伙伴的分享吧!

1 什么是机器学习

一句话概括机器学习:利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。

  1. 这个数据长啥样呢? 从我的专业接触的数据分析概念出发,可以简单粗暴认为数据就是一个DataFrame表,一行表示一个样本 x i x_i xi,一列表示所有样本的一个特征 x ( k ) x^{(k)} x(k)
  2. 有了数据,机器学习的任务是啥呢? 根据数据是否有因变量,机器学习的任务可分为有监督学习无监督学习
  3. 有监督学习和无监督学习的区别是什么?
    有监督学习:给定某些特征去估计因变量;
    无监督学习:给定某些特征但不给定因变量,建模的目的是学习数据本身的结构和关系。
  4. 本期机器学习的重点是【有监督学习】,那么有监督学习怎么分类
    回归:因变量是连续型变量;
    分类:因变量是离散型变量。
  5. 机器学习的工具是什么? sklearn

下面进入实操!

2 有监督学习导论

2.1 回归

第一步:导入要用的包

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline 
plt.style.use("ggplot")      
import seaborn as sns

第二步:导入数据

因为是导论嘛,就用例子来说明问题吧。这里使用sklearn内置数据集Boston房价数据集。

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)  # 注意这种生成表格的方式
boston_data["Price"] = y

这个数据长下面这样:
集成学习(上)Task01:熟悉机器学习的主要任务_第1张图片
第三步:分析数据

各个特征的含义如下:

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

因变量:Price——房价

可以看出,因变量为波士顿房价Price是一个连续型变量,所以这是一个回归的例子。

2.2 分类

第一步:导入要用的包(和回归部分相同)

第二部:导入数据

这里使用sklearn内置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

这个数据长下面这样:
集成学习(上)Task01:熟悉机器学习的主要任务_第2张图片
第三步:分析数据

各特征的含义如下:

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

因变量:target——类型

为了更直观地看这个数据,画个图:

marker = ['s','x','o']

plt.rcParams['font.sans-serif']=['Times New Roman']
plt.rcParams['axes.unicode_minus'] = False
plt.figure(figsize = (5,3), dpi = 512)
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()

注意!这里用循环来对每一各target对应的值进行散点图绘制。一点小的技巧:

  • enumerate函数来代替繁琐的for循环;
  • 选中y(target)值为某值的一列的数据,用df.loc[y==c, '列名'],也可以用df[df['target'] == 0]['列名'].tolist()

先看看花萼长度-花萼宽度的相关关系:
集成学习(上)Task01:熟悉机器学习的主要任务_第3张图片
再看花瓣长度-花瓣宽度的相关关系:
集成学习(上)Task01:熟悉机器学习的主要任务_第4张图片

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

你可能感兴趣的:(DataWhale,python,机器学习)