基于Python的机器学习实践(portein)

2023-11-11

目录

数据集

简介

代码

(1)数据的读入

 (2)数据理解

(3)数据规整化处理(数据准备)

 (4)数据建模

 (5)查看模型

 (6)模型预测

 (7)结果输出


数据集

https://download.csdn.net/download/llf000000/86724465

简介

机器学习最担心的事情:过拟合(训练出模型在训练集里准确率非常高,在测试机上的准确率非常低)(平时成绩很好,考试很差)。

验证集:算法选择,参数调整

以下是每一个国家对不同食品的消费量

 

使用聚类的方法判断出哪些国家饮食结构是相似的

 聚类和分类是不一样的概念:

        分类的特点是:工作开始之前你知道每个类的名字是什么,比如分男女

        聚类的特点是:把我们班的同学的性格聚类一下,类别的个数和名称我们在工作之前都不知道。

代码

(1)数据的读入

# 读入数据
import pandas as pd
protein = pd.read_table('data/protein.txt', sep='\t')

#之前访问的数据都是csv文件,现在我们访问的数据是txt文件
#'\t'是txt文件的分隔符,是tab键来分割的

# 查看前5条数据
protein.head()

 (2)数据理解

# 查看描述性统计分析
print(protein.describe())

# 查看列名
print(protein.columns)

# 查看行数和列数
print(protein.shape)

(3)数据规整化处理(数据准备)

现在我们有很多的自变量,但是自变量的取值范围不同,所以我们需要对这些数据进行规整化,做一下标准化处理,需要把这些值都映射到同一区间之内。

  1. ## 1.单列drop,就是删除某一列

  2. a = df.drop('A',axis=1)

  3. print(a)

  4. ## 2.单列drop,就是删除某一行

from sklearn import preprocessing

# 由于Country不是一个特征值,应删掉
# 
sprotein = protein.drop(['Country'], axis=1)

# 对数据进行标准化处理
sprotein_scaled = preprocessing.scale(sprotein)

# 查看处理结果
print(sprotein_scaled)

 

 (4)数据建模

# 导入KMeans类型
from sklearn.cluster import KMeans

列表推导式 :

        列表推导式可以快速生成一个列表,并筛选列表的值。

#【注意】K值的选择方法
#将K迭代,从1到20的每个数字依次地去尝试

#首先定义了一个迭代器,定义了1到19的数字
NumberOfClusters = range(1, 20)
kmeans = [KMeans(n_clusters=i) for i in NumberOfClusters]
#kmeans = [KMeans(n_clusters=i) for i in range(1, 20)]
print(kmeans)

score = [kmeans[i].fit(sprotein_scaled).score(sprotein_scaled) for i in range(len(kmeans))]
    #fit.score()的值:Calinski-Harabasz score——类内的稠密程度(协方差越小越好)和类之间的离散程度(协方差越大越好)来评估聚类的效果
score

#Calinski-Harabasz score每一类的相似度非常高,不同类的相似度非常小

​​​​​​​

 

 k = 5(或者6)的时候是非常合适的。这就是k值的选择方法,画轴线的方法,拐点那个位置就是k

import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(NumberOfClusters,score)
plt.xlabel('Number of Clusters')
plt.ylabel('Score')
plt.title('Elbow Curve')
plt.show()

# 设置KMeans聚类器的超级参数
# KMeans是一个函数
# algorithm是初始结点的选择,“auto”根据数据的特点自动选择
# n_clusters就是k,表示聚类中心
# n_init表示初始结点选择次数,因为一次选择初始结点效果可能不是很好,我们可以选择十次
# max_iter表示迭代次数
myKmeans = KMeans(algorithm="auto",n_clusters=5,n_init=10,max_iter=200)
   

 注意:初始聚类中心的选择方法——init参数,目前init参数的取值可以为:

1)k-means++算法(默认):选择彼此距离尽可能元的K个点

2)随机:random

3)指定:ndarray

# 模型训练
# 我们在标准化的数据上进行训练
myKmeans.fit(sprotein_scaled)

统计学里面称作拟合,机器学习里面称作训练 ,包里头的函数都是统一的,都是fit()

 (5)查看模型

# 查看模型
print(myKmeans)

机器学习的很多模型可解释性非常低,但可用性非常高

 (6)模型预测

# 预测聚类结果
y_kmeans = myKmeans.predict(sprotein)
print(y_kmeans)

 (7)结果输出

def print_kmcluster(k):
    '''用于聚类结果的输出
       k:为聚类中心个数
    '''
    for i in range(k):
        print('聚类', i)
        ls = []
        for index, value in enumerate(y_kmeans):
            if i == value:#value在这里是标签
                ls.append(index)
        print(protein.loc[ls, ['Country', 'RedMeat', 'Fish', 'Fr&Veg']])
            
print_kmcluster(5)#这里是函数而已,不是print的特殊形式

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于Python的机器学习实践(portein) 的相关文章

随机推荐

  • Numpy中排序操作partition,argpartition,sort,argsort

    Numpy中的排序相关操作sort argsort partition argpartition 1 np sort 2 np argsort 3 np partition 4 argpartition 今天遇见的程序里某一行需要用到num
  • A Survey on Metaverse: Fundamentals, Security, and Privacy

    本文针对 A Survey on Metaverse Fundamentals Security and Privacy 的翻译 元宇宙综述 基础 安全和隐私 摘要 1 引言 A 保护元宇宙的挑战 B 相关工作 2 元宇宙综述 A 现有元宇
  • 实心球体内部电势计算公式_电化学热力学-关于电势的一切

    电势这个概念在电化学中无处不在 但是要正确理解它并不是一件容易的事情 电势到底是什么东西 它是怎么产生的 我们怎么测量它 它有什么应用 它和其他热力学常数 Gibbs自由能 反应平衡常数 有什么关联 它和电荷又有什么关联 液接电势又是什么
  • 简单的光线追踪绘制场景

    RayTracing Time 2020 11 23 Author lwk Email 1293532247 qq com Software PyCharm CPU Razon R5 4600U 计算机图形学第二次大作业 简单的光线追踪程序
  • Flex实践—ActionScript函数功能

    上一次做了一个Flex的beautiful 页面 还记得不 这次要做的功能在上图的Diary 文本框中有介绍 这里就不做描述了 准备工作和上一次的一样 这一次添加了两个button Hide Title Show Title 下面为实现这两
  • Tomcat shutdown port 8005这个端口可以关掉吗?

    官网解释 The TCP IP port number on which this server waits for a shutdown command Set to 1 to disable the shutdown port Note
  • 野火-Stm32

  • 使用navicat连接oracle时,解决报错listener does not currently know of service

    原因 监听程序当前无法识别连接描述符中请求的服务 解决方案 1 在Oracle下载目录下搜索tnsnames ora 我的是在 W Tools Oracle setup app oracle product 11 2 0 server ne
  • 9.2 向量范数的三大不等式

    文章目录 柯西 施瓦茨不等式 赫尔德不等式 闵可夫斯基不等式 我这里要讲的三大不等式不是三种范数比较大小的三大不等式 而是非常经典的 学习线性代数必须掌握的三大不等式 柯西 施瓦茨不等式 赫尔德不等式和闵可夫斯基不等式 我先讲讲这三大不等式
  • 第三方jar包引入项目,发布到本地和远程仓库

    在开发过程中 往往会遇到对接其他公司的系统 然后对接公司会提供API对接方式 就是给一个jar包 我们只需要把jar包引入到项目中直接用即可 本地引用jar的话可以有两种方式 第一种就是本地包引用 如下将包放下工程下 然后maven指定 但
  • 关于Pytorch中的向量拼接

    torch cat A torch ones 2 4 print A B 2 torch ones 2 4 print B C torch cat A B 0 print C D torch cat A B 1 print D A的输出 t
  • 改变linux命令行中的颜色

    黑色背景 白色字体虽然是最经典的 但是有时候太多白花花的英文在一起也会变得乱 下面是我的改变字体的办法 目前我只实现了让root目录下的字体变为绿色 如下图 这个只是最简单的改变颜色的 虽然对大牛们来说很简单 但对我这个初学者来说 真是费了
  • 144项ppt制作技术

    1 两幅图片同时动作 PowerPoint的动画效果比较多 但图片只能一幅一幅地动作 如果你有两幅图片要一左一右或一上一下地向中间同时动作 可就麻烦了 其实办法还是有的 先安置好两幅图片的位置 选中它们 将之组合起来 成为 一张图片 接下来
  • 用Python建立可进可退的多级菜单系统

    coding utf 8 功能 可进可退的多级菜单系统 作者 XxLyle 日期 2021 12 16 def add record print 添加记录功能模块尚待开发 def find record print 查询记录功能模块尚待开发
  • Photoshop cs6 如何让图层渐变透明

    点击图层面板下方的蒙板工具 再选择左侧工具栏的渐变填充 选择黑 白渐变色 在图层上拖动 1 点击面板下方蒙板工具 在需要处理的图层上添加蒙板 2 选择渐变工具 快捷键G 选择黑白渐变 然后按住shift拖动鼠标拉个渐变就出来了 3 另外可以
  • 小程序的父子之间的传值调用

    前言 我们在小程序中父子组件之间的传值方法 目录 父传子 properties 步骤 1 在父组件 index wxml里面给调用子组件的地方绑定一个字段map 2 在父组件 index js中定义字段map 并用this setData改
  • Hbase批量查询-scan介绍

    1 scan原理 HBase的查询实现只提供两种方式 1 按指定RowKey 获取唯一一条记录 get方法 org apache hadoop hbase client Get Get 的方法处理分两种 设置了ClosestRowBefor
  • 桌面软件自动化测试小记

    什么是软件自动化测试 如何学习软件自动化及几个例子 Py UiAutomation
  • Swagger的使用详细教程

    Swagger的使用详细教程 Swagger是一款开源的API文档工具 它提供了一种简单且强大的方式来描述 展示和测试RESTful风格的Web服务接口 本文将详细介绍Swagger的使用方法 包括安装配置和使用示例 步骤 1 添加Swag
  • 基于Python的机器学习实践(portein)

    目录 数据集 简介 代码 1 数据的读入 2 数据理解 3 数据规整化处理 数据准备 4 数据建模 5 查看模型 6 模型预测 7 结果输出 数据集 https download csdn net download llf000000 86