一.无监督学习包含的算法:
聚类:kmeans聚类算法
降维:PCA
之所以叫无监督学习:是因为模型是从无标签的数据开始学习,没有目标值。
二.kmeans聚类
1.聚类算法
步骤
- 随机选择特征空间中的k 个点作为初始聚类中心
- 对于其他每一个点,计算其到每一个聚类中心的距离,选择距离最近的一个聚类中心点作为标记类别,将所有的点划分到所属的类别
- 对每个类别重新计算出新的聚类中心点(平均值)
- 如果计算出的新的中心点与原来的中心点一样,那么结实否则重复进行第二步骤
API:sklearn.cluster.KMeans(n_clusters=8,init="k-means++")
- n_clusers:开始的聚类中心数量
- init :聚类方法,默认为kmeans++
- labels_:默认标记的类型,可以和真实值比较
2.PCA
定义:将高维数据转化为低维数据的过程,在此过程中可能会舍弃原有数据,创造新的变量
作用:降低原始数据的维数(复杂度),损失少量信息,避免模型的过拟合。
应用:回归分析或者聚类分析中
计算过程:找到一条合适的直线,通过矩阵运算得出主成分分析的结果。
API:sklearn.decomposition.PCA(n_components=None)
n_components :小数,表示保留百分之多少的信息;整数:减少到多少特征
PCA.fit_transform(X) X为numpy,array类型的数据格式
返回值:转换后指定维度的数值。
3.kmeans性能评估的指标
轮廓系数
原理:使得内部距离最小化,外部距离最大化
分析过程:我们以一个点(蓝1)为例
- 计算出蓝1这个点离本身族群所有点的距离的平均值a_i
- 蓝1这个点到其他族群的距离的平均值,取最小的那个距离作为b_i
- 根据公式,极端值进行考虑:如果b_i<<a_i,趋近于-1,聚类效果不好,轮廓系数的值是介于[-1,1]之间,越是趋近于1,代表内聚度和分离度都相对较优。
轮廓系数API
sklearn.metrics.silhouette_score(X,labels)
- 计算所有样本的平均轮廓系数
- X:特征值
- labels:被聚类标记的目标值
kmeans总结:采用迭代式算法,直观易懂且实用;但是容易收敛到局部最优解。
三.案例(用kmeans聚类探索用户对不同物品的喜好)
1.获取数据
import pandas as pd
from sklearn.decomposition import PCA
import os
os.chdir("F:qqfiles数据科学学习视频机器学习视频instacart")
order_products=pd.read_csv("order_products__prior.csv")
products=pd.read_csv("products.csv")
orders=pd.read_csv("orders.csv")
aisles=pd.read_csv("aisles.csv")
order_products.head()
2.数据合并
#让aisle_id与product_id连接在一起
tab1=pd.merge(aisles,products,on=["aisle_id"])
tab2=pd.merge(tab1,order_products,on=["product_id"])
tab3=pd.merge(tab2,orders,on=["order_id"])
tab3.head()
table=pd.crosstab(tab3["user_id"],tab3["aisle"])
抽取部分数据进行分析
data=table[:10000]
3.PCA
transfer=PCA(n_components=0.95)
data_new=transfer.fit_transform(data)
4.估计器
from sklearn.cluster import KMeans
estimator=KMeans(n_clusters=3)
estimator.fit(data_new)
y_predict=estimator.predict(data_new)
y_predict[:100]
5.模型评估
轮廓系数
from sklearn.metrics import silhouette_score
silhouette_score(data_new,y_predict)
今天我给大家分享了关于监督学习的一些基础,下次我将给大家分享监督学习更加深层次的内容。