IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 利用Ancol PCA法将祖源计算器结果与实际情况相结合可视化分析 -> 正文阅读

[人工智能]利用Ancol PCA法将祖源计算器结果与实际情况相结合可视化分析

前言


看到题目的小伙伴是不是内心有一万个?是不是想问那个Ancol PCA是什么鬼。不知道正常,因为这词是我造的233333
为什么叫这个名字:众所周知血统的英文是Ancestry,位置的英文是location,这俩单词取前三个字母,loc再倒过来去掉c,组合在一起不就是Ancol吗~PCA就是主成分分析的意思不变哦~

下面教程正式开始:


编程语言:python3.8
模块:pandas numpy sklearn matplotlib geopy
整体思路:先将计算器的多维数据降为二维数据并使其作为x,y轴,再将位置数据转化为一维数据并使其作为z轴,最后组合为三维数据并可视化

代码:


# 获取位置的经纬度
from geopy.geocoders import Nominatim

geolocator = Nominatim(user_agent = 'google_map')
location = geolocator.geocode('location')
(location.latitude, location.longitude)

# 降维并可视化
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import  pandas as pd
import numpy as np

# 数据预处理部分
## 数据读取
df = pd.read_csv('new_pca.csv', index_col = 0, header = 0)
## 获取样本所属族群
label = df.index
## 选出e11计算器数据部分
data = df.loc[:, '非洲':'美洲']
## 选出经纬度部分
df = df.loc[:, '纬度':'经度']
# 开始降维
## 将经纬度转化为弧度制并降维为一维数据
pca = PCA(n_components = 1)
z = pca.fit_transform(np.deg2rad(df))
## 将e11计算器11维数据降维为二维
pca = PCA(n_components = 2)
data_2 = pca.fit_transform(data)
# 将两数组合并
data = np.concatenate((data_2, z), axis = 1)
# 散点图可视化
fig = plt.figure()
ax = Axes3D(fig)
for i in range(len(label)):
    x, y, z = data[i][0], data[i][1], data[i][-1]
    if label[i] == '韩国':
        ax.scatter(x, y, z, color = 'blue')
    elif label[i] == '吉林省':
        ax.scatter(x, y, z, color = 'red')
plt.show()

结果展示:


在这里插入图片描述
(此示例是利用了韩国人和吉林省朝鲜族的e11数据以及位置信息做出来的Ancol PCA图)

此方法的优势:


可以将计算器结果极为相似的两个或多个族群在散点图上分散开,并且实现了将基因水平与个体水平较为科学的相结合分析

此方法的劣势:


点与点的的欧式距离不能准确的反映族群间的遗传距离,此外,对于晕3D的人来说数据的读取也较为难受。

此方法的意义:


以前大家看祖源的分析方法就只是直接看计算器结果再问问哪里人什么族,推断。最多也就再结合着传统的PCA看看。但利用此方法可以将位置信息数字化,更加科学的进行溯源。

下面是实现Ancol PCA的流程图:


在这里插入图片描述

以及绘制流程图用的代码:


from graphviz import Digraph
dot = Digraph(comment = 'The Round Table')
# 定点
dot.node('#', '读取数据')
dot.node('a', '计算器数据')
dot.node('b', '计算器二维数据')
dot.node('c', '数据所在地')
dot.node('d', '经纬度')
dot.node('e', '弧度制位置信息')
dot.node('f', '一维位置')
dot.node('+', '组成新数组')
dot.node('g', '三维图可视化')
# 连线
dot.edge('#', 'a', 'pandas')
dot.edge('a', 'b', 'sklearn(PCA)')
dot.edge('b', '+', 'numpy(concatenate)')
dot.edge('#', 'c', 'pandas')
dot.edge('c', 'd', 'geopy')
dot.edge('d', 'e', 'numpy(deg2rad)')
dot.edge('e', 'f', 'sklearn(PCA)')
dot.edge('f', '+', 'numpy(concatenate)')
dot.edge('+', 'g', 'matplotlib')
# 输出PDF
dot.render('ancol_pca.pdf')

感谢:


数据提供:母系-mtDNA祖源群 QQ:923891525
提供编程语言:Python 官网:https://www.python.org
提供模块:
pandas 官网:https://pandas.pydata.org
numpy 官网:https://www.numpy.org/
matplotlib 官网:https://matplotlib.org
sklearn 官网:https://scikit-learn.org/stable/
geopy 项目网站:https://github.com/geopy/geopy
graphviz 官网:http://www.graphviz.org


??杨昊霖
转载时请注明出处

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:38:10  更:2021-07-29 11:38:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 11:30:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码