机器学习的部分我比较熟悉了,我把本节的学习重点放在sklearn工具包上
导论
机器学习:用数学模型理解数据,发现数据中的规律,用作数据分析和预测。
机器学习任务分类
- 根据是否有因变量:
- 有监督学习
- 无监督学习
- 根据因变量是否连续:
- 回归
- 分类
常用工具包:scikit-learn(sklearn)
回归
以sklearn内置数据集Boston房价数据集为例。sklearn中所有内置数据集都封装在datasets对象内。
- data: 特征X的矩阵(ndarray)
- target: 因变量的向量(ndarray)
- feature_names: 特征名称(ndarray)
from sklearn import datasets
import pandas as pd
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 #添加一个colume
boston_data.head() #展示前五个sample
分类
以iris数据集为例。
from sklearn import datasets
import pandas as pd
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()
下面这个利用pandas Dataframe的作图方式可以学习一下:
import matplotlib.pyplot as plt
%matplotlib inline
plt.style.use("ggplot")
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可以用来生成复合我们需求的数据集,例如:
# 生成月牙型非凸集
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()
# 生成符合正态分布的聚类数据
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()