每天给你送来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,情感分析、意见挖掘、句法分析、机器翻译、人机对话、知识图谱、语音识别等。

记得备注呦

整理不易,还望给个在看!

机器学习全面教程无监督学习系列相关推荐

  1. 机器学习中的无监督学习_无监督机器学习中聚类背后的直觉

    机器学习中的无监督学习 When it comes to analyzing & making sense of the data from the past and understandin ...

  2. 机器学习-Sklearn-07(无监督学习聚类算法KMeans)

    机器学习-Sklearn-07(无监督学习聚类算法KMeans) 学习07 1 概述 1.1 无监督学习与聚类算法 聚类算法又叫做"无监督分类",其目的是将数据划分成有意义或有用的 ...

  3. 机器学习中的无监督学习是什么?

    什么是无监督学习? 顾名思义,"无监督"学习发生在没有监督者或老师并且学习者自己学习的情况下. 例如,考虑一个第一次看到并品尝到苹果的孩子.她记录了水果的颜色.质地.味道和气味.下 ...

  4. 机器学习中的无监督学习应用在哪些领域呢?自动驾驶?医疗影像?卷积神经网络?

    监督学习|机器学习|集成学习|进化计算| 非监督学习| 半监督学习|自监督学习| 无监督学习| 随着人工智能.元宇宙.数据安全.可信隐私用计算.大数据等领域的快速发展,自监督学习脱颖而出,致力于解决数 ...

  5. 写给人类的机器学习 三、无监督学习

    三.无监督学习 原文: Machine Learning for Humans, Part 3: Unsupervised Learning 作者:Vishal Maini 译者:机器之心 聚类和降维 ...

  6. 入门机器学习(十五)--无监督学习(K均值)

    1.无监督学习-简介(Unsupervised Learning-Introduction) 如下图所示是一个典型的监督学习,训练集中的每一个样本都有标签,我们需要根据标签来拟合一个假设函数. 什么是 ...

  7. 【机器学习】【无监督学习】【算法01-理论1】Apiori算法-筛选频繁集

    Apriori算法 引用1 Apriori算法是一种用于进行关联分析的算法,在Agrawal 等人提出的1993最初提出的动机是针对购物篮分析问题提出的,其目的是为了发现交易数据库中不同商品之间的联系 ...

  8. Python机器学习基础篇三《无监督学习与预处理》

    前言 前期回顾: Python机器学习基础篇二<为什么用Python进行机器学习> 上面这篇里面写了文本和序列相关. 我们要讨论的第二种机器学习算法是无监督学习算法.无监督学习包括没有已知 ...

  9. 6.1 无监督学习-机器学习笔记-斯坦福吴恩达教授

    无监督学习 从本节开始,将正式进入到无监督学习(Unsupervised Learning)部分.无监督学习,顾名思义,就是不受监督的学习,一种自由的学习方式.该学习方式不需要先验知识进行指导,而是不 ...

  10. 吴恩达机器学习(十一)K-means(无监督学习、聚类算法)

    目录 0. 前言 1. K-means的算法流程 2. 代价函数(优化目标函数) 3. K 的选择 学习完吴恩达老师机器学习课程的无监督学习,简单的做个笔记.文中部分描述属于个人消化后的理解,仅供参考 ...

最新文章

  1. reid 数据集 行人重拾别
  2. python 异步io_python之同步IO和异步IO
  3. 微信公众号Java开发-笔记01【微信公众号介绍、开发环境搭建】
  4. Deploy One Project on Heroku (Week IV)
  5. 【Java3】封装,对象数组,构造器,this/super/继承,抽象
  6. 解决listview点击item失效
  7. 一、CXF WebService准备工作
  8. QML 获取当前时间戳 yyyy-MM-dd hh:mm:ss.zzz
  9. 数据备份与恢复、系统备份与恢复
  10. C#之Dispose
  11. Jasmine中describe和it
  12. Andriod中如何新建lunch项
  13. 微信红包雨怎么抢_微信红包雨怎么发? 微信红包雨的操作方法?
  14. 制作京东首页右侧固定层练习
  15. 开源项目之Android繁体中文输入法
  16. 支付宝/小钱袋H5支付通道
  17. icomoon使用方法
  18. 黑马程序员武汉校区 小舞老师 免费资料速速关注领取!!
  19. 信号时频域分析 ——EMD/BEMD/LMD 算法原理
  20. element-ui input 只能输入数字保留两位小数

热门文章

  1. Python之进程、线程、锁
  2. vue-13-swiper组件的使用
  3. 你为什么用微信,不用 QQ ?
  4. Java 获取汉字拼音的方法
  5. UNITY自带的3D object没有三角形?
  6. Studio for WPF:使用 C1TileView 创建图片库
  7. Win8:Setting
  8. Access操作的注意事项
  9. 写了一个对象集合排序的类
  10. java day32【HTML标签:表单标签 、CSS】