参加Datawhale的小组学习,把之前自学的机器学习再拾掇拾掇~~
参考:开源项目:机器学习集成学习与模型融合(基于python)
https://github.com/datawhalechina/team-learning-data-mining/tree/master/EnsembleLearning
1.定义
机器学习
是一门从数据中研究算法的科学学科。机器学习直白来讲,是根据已有的数据,进行算法选择,并基于算法和数据构建模型,最终对未来进行预测。
数据集一般由**自变量(x,特征)和因变量(y,标签)**组成。根据数据是否有因变量,机器学习的任务可分为:有监督学习和无监督学习。
• 有监督学习:给定某些特征去估计因变量,即因变量存在的时候,我们称这个机器学习任务为有监督学习。简单理解就是有x,也有y。
• 无监督学习:给定某些特征但不给定因变量,建模的目的是学习数据本身的结构和关系。简单理解就是不给y,研究x的数据结构和特征,比如聚类。
根据因变量的是否连续,有监督学习又分为回归和分类:
• 回归:因变量是连续型变量,如:房价,体重等。
• 分类:因变量是离散型变量,如:是否患癌症,西瓜是好瓜还是坏瓜等。
1.1回归
以波士顿房价数据集为例,
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()
sns.scatterplot(boston_data['CRIM'],boston_data['Price'],color="r",alpha=0.6)
plt.title("Price~NOX")
plt.show()
给定任务所需要的因变量,因变量为波士顿房价Price是一个连续型变量
1.2分类
以鸢尾花数据集为例,
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()
# 可视化特征
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()
可以看到:每种不同的颜色和点的样式为一种类型的鸢尾花,数据集有三种不同类型的鸢尾花
1.3无监督学习
如聚类问题
# 生成符合正态分布的聚类数据
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()