分类
- 有监督学习(supervised learning):对数据的若干特征与若干标签(类型)之间的关联性进行建模的过程。
- 分类(classification):标签是离散值。
- 回归(regression):标签是连续值。
- 无监督学习(unsupervised learning):对不带任何标签的数据特征进行建模,“让数据自己介绍自己”。
- 聚类(clustering):将数据分成不同的组别。
- 降维(dimensionality reduction):更简洁的方式表现数据。
有监督学习示例:鸢尾花数据分类
如何为鸢尾花数据集建立模型,先用一部分数据进行训练,再用模型预测出其他样本的标签?
使用高斯朴素贝叶斯(Gaussian naive Bayes)方法完成这个任务(假设每个特征中属于每一类的观测值都符合高斯分布)。
现将数据分割成训练集(training set)和测试集(testing set),整理数据、预测,最后用accuracy_score工具验证模型预测结果的准确率(97%)。
from sklearn.model_selection import train_test_split
Xtrain, Xtest, ytrain, ytest = train_test_split(X_iris, y_iris, random_state=1)
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(Xtrain, ytrain)
y_model = model.predict(Xtest)
from sklearn.metrics import accuracy_score
accuracy_score(ytest, y_model)
无监督学习示例:鸢尾花数据降维
找到一个可以保留数据本质特征的低维矩阵来表示高维数据。
使用主成分分析(principal component analysis,PCA)方法提取两个维度
PCA 降维
from sklearn.decomposition import PCA
model = PCA(n_components=2)
model.fit(X_iris)
X_2D = model.transform(X_iris)
iris['PCA1'] = X_2D[:,0]
iris['PCA2'] = X_2D[:,1]
sns.lmplot(x="PCA1", y="PCA2", hue='species', data=iris, fit_reg=False);
无监督学习示例:鸢尾花数据聚类
聚类算法是要对诶呀任何标签的数据集进行分组。
使用高斯混合模型(Gaussian mixture model,GMM),试图将数据构造成若干符合高斯分布的概率密度函数簇。
注意拟合数据的时候不需要y变量。
from sklearn.mixture import GaussianMixture
model = GaussianMixture(n_components=3, covariance_type='full')
model.fit(X_iris)
y_gmm = model.predict(X_iris)
iris['cluster'] = y_gmm
sns.lmplot(x="PCA1", y="PCA2", col = 'cluster', hue='species', data=iris, fit_reg=False)
参考:
[1]美 万托布拉斯 (VanderPlas, Jake).Python数据科学手册[M].人民邮电出版社,2018.