机器学习全面教程无监督学习系列
每天给你送来NLP技术干货!
来自:ChallengeHub
A.监督学习
1.EDA(Exploratory Data Analysis)
2.K-Nearest Neighbors(KNN)
3.线性回归
4.交叉验证(CV)
5.正则化回归
6.ROC曲线与逻辑回归
7.超参数调优
8.SVM
B.无监督学习
1.Kmeans聚类
2.聚类效果评价
3.标准化
4.层次分析法
5.T-分布随机近邻嵌入(T-SNE)
6.主成分分析(PCA)
监督学习
可以查看机器学习全面教程-有监督学习篇
无监督学习
无监督学习: 它使用无标记的数据,并从无标记的数据中发现隐藏的模式信息。例如,有些骨科病人数据没有标签,你不知道哪个骨科病人是正常的,哪个是不正常的。
1.Kmeans聚类
让我们尝试我们的第一个无监督的方法,即KMeans Cluster
KMeans聚类:该算法基于所提供的特征迭代地将每个数据点分配给K组中的一个。基于特征相似性对数据点进行聚类
KMeans(n_clusters = 2): n_clusters = 2表示创建2个簇群
先看数据的分布
# As you can see there is no labels in data
data = pd.read_csv('column_2C_weka.csv')
plt.scatter(data['pelvic_radius'],data['degree_spondylolisthesis'])
plt.xlabel('pelvic_radius')
plt.ylabel('degree_spondylolisthesis')
plt.show()
再看通过Kmeans聚类分类效果
# KMeans Clustering
data2 = data.loc[:,['degree_spondylolisthesis','pelvic_radius']]
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters = 2)
kmeans.fit(data2)
labels = kmeans.predict(data2)
plt.scatter(data['pelvic_radius'],data['degree_spondylolisthesis'],c = labels)
plt.xlabel('pelvic_radius')
plt.xlabel('degree_spondylolisthesis')
plt.show()
2.聚类效果评价
我们把数据分成两组。这是正确的聚类吗? 为了评估聚类效果,我们将使用交叉表。
有两个集群,分别是0和1
标签0包括138例异常患者和100例正常患者
标签1包括72例异常患者和0例正常患者
两个簇群中大多数为异常患者。
# cross tabulation table
df = pd.DataFrame({'labels':labels,"class":data['class']})
ct = pd.crosstab(df['labels'],df['class'])
print(ct)
上面存在一个问题是,我们事先知道了数据中是几分类问题,但是如果不知道呢? 那这有点像KNN或回归中的超参数问题了。
inertia:簇群与每个样本之间的距离
更小的inertia意味着更多的簇
簇群的最佳数量是多少?
更小的inertia,没有太多的簇群平衡,所以我们可以选择elbow
# inertia
inertia_list = np.empty(8)
for i in range(1,8):kmeans = KMeans(n_clusters=i)kmeans.fit(data2)inertia_list[i] = kmeans.inertia_
plt.plot(range(0,8),inertia_list,'-o')
plt.xlabel('Number of cluster')
plt.ylabel('Inertia')
plt.show()
3.标准化
标准化对于监督学习和非监督学习都很重要,可以消除量纲影响
from sklearn.preprocessing import StandardScaler
from sklearn.pipeline import make_pipeline
scalar = StandardScaler()
kmeans = KMeans(n_clusters = 2)
pipe = make_pipeline(scalar,kmeans)
pipe.fit(data3)
labels = pipe.predict(data3)
df = pd.DataFrame({'labels':labels,"class":data['class']})
ct = pd.crosstab(df['labels'],df['class'])
print(ct)
4.层次分析法
竖线是簇
树状图高度: 归并簇之间的距离
方法= 'single': 表示簇的最近点
from scipy.cluster.hierarchy import linkage,dendrogrammerg = linkage(data3.iloc[200:220,:],method = 'single')
dendrogram(merg, leaf_rotation = 90, leaf_font_size = 6)
plt.show()
5.T-SNE
学习率:正常情况下50-200
T-sne只有fit_transform
from sklearn.manifold import TSNE
model = TSNE(learning_rate=100)
transformed = model.fit_transform(data2)
x = transformed[:,0]
y = transformed[:,1]
plt.scatter(x,y,c = color_list )
plt.xlabel('pelvic_radius')
plt.xlabel('degree_spondylolisthesis')
plt.show()
6.PCA
基本的降维技术
第一步是去相关:
旋转数据样本以使其与轴对齐
移动数据样本,使其均值为零
没有信息丢失
Fit():学习如何移动样本
Transform():应用学到的转换。也可以应用测试集
由此产生的PCA特征不是线性相关的
主成分:是方差方向
# PCA
from sklearn.decomposition import PCA
model = PCA()
model.fit(data3)
transformed = model.transform(data3)
print('Principle components: ',model.components_)
# PCA variance
scaler = StandardScaler()
pca = PCA()
pipeline = make_pipeline(scaler,pca)
pipeline.fit(data3)plt.bar(range(pca.n_components_), pca.explained_variance_)
plt.xlabel('PCA feature')
plt.ylabel('variance')
plt.show()
第二步:内在维度: 需要特征数量来近似数据背后的基本思想
当样本具有任意数量的特征时,主成分分析识别内在维数
内在维度 = 具有显著方差的PCA特征的数量
为了选择内在维度,尝试所有的方法并找到最佳的精度
# apply PCA
pca = PCA(n_components = 2)
pca.fit(data3)
transformed = pca.transform(data3)
x = transformed[:,0]
y = transformed[:,1]
plt.scatter(x,y,c = color_list)
plt.show()
投稿或交流学习,备注:昵称-学校(公司)-方向,进入DL&NLP交流群。
方向有很多:机器学习、深度学习,python,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。
记得备注呦
整理不易,还望给个在看!
机器学习全面教程无监督学习系列相关推荐
- 机器学习中的无监督学习_无监督机器学习中聚类背后的直觉
机器学习中的无监督学习 When it comes to analyzing & making sense of the data from the past and understandin ...
- 机器学习-Sklearn-07(无监督学习聚类算法KMeans)
机器学习-Sklearn-07(无监督学习聚类算法KMeans) 学习07 1 概述 1.1 无监督学习与聚类算法 聚类算法又叫做"无监督分类",其目的是将数据划分成有意义或有用的 ...
- 机器学习中的无监督学习是什么?
什么是无监督学习? 顾名思义,"无监督"学习发生在没有监督者或老师并且学习者自己学习的情况下. 例如,考虑一个第一次看到并品尝到苹果的孩子.她记录了水果的颜色.质地.味道和气味.下 ...
- 机器学习中的无监督学习应用在哪些领域呢?自动驾驶?医疗影像?卷积神经网络?
监督学习|机器学习|集成学习|进化计算| 非监督学习| 半监督学习|自监督学习| 无监督学习| 随着人工智能.元宇宙.数据安全.可信隐私用计算.大数据等领域的快速发展,自监督学习脱颖而出,致力于解决数 ...
- 写给人类的机器学习 三、无监督学习
三.无监督学习 原文: Machine Learning for Humans, Part 3: Unsupervised Learning 作者:Vishal Maini 译者:机器之心 聚类和降维 ...
- 入门机器学习(十五)--无监督学习(K均值)
1.无监督学习-简介(Unsupervised Learning-Introduction) 如下图所示是一个典型的监督学习,训练集中的每一个样本都有标签,我们需要根据标签来拟合一个假设函数. 什么是 ...
- 【机器学习】【无监督学习】【算法01-理论1】Apiori算法-筛选频繁集
Apriori算法 引用1 Apriori算法是一种用于进行关联分析的算法,在Agrawal 等人提出的1993最初提出的动机是针对购物篮分析问题提出的,其目的是为了发现交易数据库中不同商品之间的联系 ...
- Python机器学习基础篇三《无监督学习与预处理》
前言 前期回顾: Python机器学习基础篇二<为什么用Python进行机器学习> 上面这篇里面写了文本和序列相关. 我们要讨论的第二种机器学习算法是无监督学习算法.无监督学习包括没有已知 ...
- 6.1 无监督学习-机器学习笔记-斯坦福吴恩达教授
无监督学习 从本节开始,将正式进入到无监督学习(Unsupervised Learning)部分.无监督学习,顾名思义,就是不受监督的学习,一种自由的学习方式.该学习方式不需要先验知识进行指导,而是不 ...
- 吴恩达机器学习(十一)K-means(无监督学习、聚类算法)
目录 0. 前言 1. K-means的算法流程 2. 代价函数(优化目标函数) 3. K 的选择 学习完吴恩达老师机器学习课程的无监督学习,简单的做个笔记.文中部分描述属于个人消化后的理解,仅供参考 ...
最新文章
- reid 数据集 行人重拾别
- python 异步io_python之同步IO和异步IO
- 微信公众号Java开发-笔记01【微信公众号介绍、开发环境搭建】
- Deploy One Project on Heroku (Week IV)
- 【Java3】封装,对象数组,构造器,this/super/继承,抽象
- 解决listview点击item失效
- 一、CXF WebService准备工作
- QML 获取当前时间戳 yyyy-MM-dd hh:mm:ss.zzz
- 数据备份与恢复、系统备份与恢复
- C#之Dispose
- Jasmine中describe和it
- Andriod中如何新建lunch项
- 微信红包雨怎么抢_微信红包雨怎么发? 微信红包雨的操作方法?
- 制作京东首页右侧固定层练习
- 开源项目之Android繁体中文输入法
- 支付宝/小钱袋H5支付通道
- icomoon使用方法
- 黑马程序员武汉校区 小舞老师 免费资料速速关注领取!!
- 信号时频域分析 ——EMD/BEMD/LMD 算法原理
- element-ui input 只能输入数字保留两位小数