机器学习的三大主要任务
摘要:机器学习在人工智能中一直是一个很热门的概念,那么什么是机器学习呢?今天就来好好了解一下机器学习机器学习的三大主要任务吧
概论
机器学习的一个重要的目标就是利用数学模型来理解数据,发现数据中的规律,用作数据的分析和预测。这里说的数据数据,一般是由一组向量组成的,其中的每一个向量就是一个样本。一个样本通常包括p+1个维度,前p个维度 我们称之为特征,最后一个维度我们称之为因变量。而特征与因变量的关系是:特征是用来描述影响因变量的的因素,比如:我们研究温度对苹果成熟的影响时,温度就是一个特征,而苹果成熟就是一个因变量。通常一个数据表DataFrame里,一行表示一个样本,一列表示一个特征。
而根据是否有因变量,机器学习任务可以简单地划分为:有监督学习与无监督学习;而根据因变量是否连续,有监督学习又分为回归和分类两类问题:
在学习机器学习中,我们经常使用scikit-learn简称sklearn工具库来探索机器学习项目,下面我们开始使用sklearn来演示这几个具体的概念:(在开始之前,需要先导入相应的科学计算包)
# 引入相关科学计算包
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房价数据集为例子
from sklearn import datasets
boston = datasets.load_boston() # 返回一个类似于字典的类
X = boston.data # data:特征X的矩阵(ndarray)
y = boston.target # target:因变量的向量(ndarray)
features = boston.feature_names # feature_names:特征名称(ndarray)
boston_data = pd.DataFrame(X,columns=features)
boston_data["Price"] = y
boston_data.head()
CRIM | ZN | INDUS | CHAS | NOX | RM | AGE | DIS | RAD | TAX | PTRATIO | B | LSTAT | Price | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 0.00632 | 18.0 | 2.31 | 0.0 | 0.538 | 6.575 | 65.2 | 4.0900 | 1.0 | 296.0 | 15.3 | 396.90 | 4.98 | 24.0 |
1 | 0.02731 | 0.0 | 7.07 | 0.0 | 0.469 | 6.421 | 78.9 | 4.9671 | 2.0 | 242.0 | 17.8 | 396.90 | 9.14 | 21.6 |
2 | 0.02729 | 0.0 | 7.07 | 0.0 | 0.469 | 7.185 | 61.1 | 4.9671 | 2.0 | 242.0 | 17.8 | 392.83 | 4.03 | 34.7 |
3 | 0.03237 | 0.0 | 2.18 | 0.0 | 0.458 | 6.998 | 45.8 | 6.0622 | 3.0 | 222.0 | 18.7 | 394.63 | 2.94 | 33.4 |
4 | 0.06905 | 0.0 | 2.18 | 0.0 | 0.458 | 7.147 | 54.2 | 6.0622 | 3.0 | 222.0 | 18.7 | 396.90 | 5.33 | 36.2 |
sns.scatterplot(boston_data['TAX'],boston_data['Price'],color="r",alpha=0.6)
plt.title("Price~TAX")
plt.show()
我们可以看到,这里样本为TAX:全部价值的房产税率(每1万美元),因变量为波士顿房价Price是一个连续型变量,所以这是一个回归的例子。
分类
我们来看看一个分类的典型例子: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()
sepal length (cm) | sepal width (cm) | petal length (cm) | petal width (cm) | target | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | 0 |
1 | 4.9 | 3.0 | 1.4 | 0.2 | 0 |
2 | 4.7 | 3.2 | 1.3 | 0.2 | 0 |
3 | 4.6 | 3.1 | 1.5 | 0.2 | 0 |
4 | 5.0 | 3.6 | 1.4 | 0.2 | 0 |
特征可视化,横纵坐标分别为花瓣的长度和宽度
# 可视化特征
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()
从可视化特征可以看出,数据集中有3种不同类型的鸢尾花。因此因变量是个类别变量,这是一个分类问题。
无监督学习
sklearn.datasets模块提供了用于加载数据集的实用程序,包括用于加载和获取流行的参考数据集的方法,以下面这一种为例:
#在2d平面中制作一个包含较小圆圈的大圆圈。
from sklearn import datasets
x, y = noisy_circles = datasets.make_circles(n_samples=1500, factor=.5,
noise=.05)
for index,c in enumerate(np.unique(y)):
plt.scatter(x[y==c, 0], x[y==c, 1],s=7)
plt.show()
总结
Task1深入浅出地讲解了机器学习的基础,有监督,无监督,回归,分类等等,必须准确把握这些概念,才能在接下来的学习中灵活运用