大作业

本次练习使用 鸢尾属植物数据集.\iris.data,在这个数据集中,包括了三类不同的鸢尾属植物:Iris Setosa,Iris Versicolour,Iris Virginica。每类收集了50个样本,因此这个数据集一共包含了150个样本。sepallength:萼片长度sepalwidth:萼片宽度petallength:花瓣长度petalwidth:花瓣宽度以上四个特征的单位都是厘米(cm)。 sepallength sepalwidth petallength petalwidth species
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa
3 4.6 3.1 1.5 0.2 Iris-setosa
4 5.0 3.6 1.4 0.2 Iris-setosa
… … … … … …
145 6.7 3.0 5.2 2.3 Iris-virginica
146 6.3 2.5 5.0 1.9 Iris-virginica
147 6.5 3.0 5.2 2.0 Iris-virginica
148 6.2 3.4 5.4 2.3 Iris-virginica
149 5.9 3.0 5.1 1.8 Iris-virginica

[150 rows x 5 columns]

import numpy as np
import pandas as pd
np.set_printoptions(suppress=True)  # 取消科学计数法显示# 1.导入同时存在数字和文本的数据集
iris = pd.read_csv('iris.csv', usecols=[1, 2, 3, 4, 5])
# 转换成numpy数组形式
columns_name = iris.columns  # ['Sepal.Length', 'Sepal.Width', 'Petal.Length', 'Petal.Width', 'Species']
iris_array = np.array([[iris[columns_name[0]][i], iris[columns_name[1]][i], iris[columns_name[2]][i],iris[columns_name[3]][i]] for i in range(len(iris[columns_name[0]]))])# 2.求出鸢尾属植物萼片长度(Sepal.Length)的平均值、中位数和标准差
d = iris['Sepal.Length']
d_mean = np.mean(d)
# print(d_mean)  # 5.843333333333334
d_median = np.median(d)
# print(d_median)  # 5.8
d_std = np.std(d)
# print(d_std)  # 0.8253012917851409# 3.创建一种标准化形式的鸢尾属植物萼片长度,其值正好介于0和1之间(Sepal.Length)
d_normalize = (d-d.min())/(d.max()-d.min())
# print(d_normalize)# 4.找到鸢尾属植物萼片长度(Sepal.Length)的第5和第95百分位数
d_5, d_95 = np.percentile(d, [5, 95])
# print(d_5, d_95)  # 4.6 7.254999999999998# 5.把iris_data数据集中的20个随机位置修改为np.nan值
np.random.seed(20201201)
id_x = np.random.randint(0, len(iris_array), size=20)
id_y = np.random.randint(0, len(iris_array[0]), size=20)
id = np.array([[id_x[i], id_y[i]] for i in range(len(id_x))])
# print(id)  # 随机点坐标
for idx in id:iris_array[idx[0]][idx[1]] = np.nan
# print(iris_array)  # 修改后的数据# 6.在iris_data的(Sepal.Length)中查找缺失值的个数和位置
d_new = iris_array[:, 0]
# np.isnan(d_new):返回矩阵,nan元素返回值为True
nan_num = np.sum([1 for i in np.isnan(d_new) if i == True])
# print(nan_num)  # 3
nan_id = [i for i in range(len(d_new)) if np.isnan(d_new)[i] == True]
# print(nan_id)  # [95, 101, 144]# 7.筛选具有 Sepal.Length< 5.0 并且 Petal.Length> 1.5 的 iris_data行
qualified_data = np.array([iri for iri in iris_array if iri[0] < 5.0 and iri[2] > 1.5])
# print(qualified_data)# 8.选择没有任何 nan 值的 iris_data行
flag_array = np.isnan(iris_array)  # 返回矩阵,nan元素返回值为True
nan_id = []  # 找出 nan 的行的索引
for i in range(len(flag_array)):if np.isin(True, flag_array[i]):  # 该行有缺失值nan_id.append(i)
nan_id = np.array(nan_id)
iris_array_no_non = np.delete(iris_array, nan_id, axis=0)  # 删除有 nan 的行
# print(iris_array)  # 输出没有任何 nan 值的 iris_data行# 9.计算 iris_array 中Sepal.Length(第1列)和Petal.Length(第3列)之间的相关系数
sepal_length = iris_array_no_non[:, 0]
petal_length = iris_array_no_non[:, 2]
cor = np.corrcoef(sepal_length, petal_length)
# print(cor)  # 输出相关系数矩阵
# [[ 1.         -0.14424092]
#  [-0.14424092  1.        ]]# 10.找出iris_data是否有任何缺失值
# print(nan_id)  # 输出有 nan 的行的索引# 11.在numpy数组中将所有出现的nan替换为0
iris_array[np.isnan(iris_array)] = 0
# print(iris_array)# 12.找出鸢尾属植物物种中的唯一值和唯一值出现的数量
from collections import Counter
iris_one = iris_array.reshape(1, len(iris_array)*4)[0]  # 降维,降维1维
num = Counter(iris_one)  # 唯一值统计
# print(num)  # 输出唯一值及其出现的数量# 13.将 iris_data 的花瓣长度(Petal.Length)以形成分类变量的形式显示
# 定义:Less than 3 --> 'small';3-5 --> 'medium';'>=5 --> 'large'
petal = iris_array[:, 2]
bins = np.array([0.0, 3.0, 5.0, np.max(petal)])  # 分段点
inds = np.digitize(petal, bins)  # 产生分段结果
labels = {1: 'small', 2: 'medium', 3: 'large', 4: np.nan}
petal_kinds = [labels[x] for x in inds]  # 添加标签
# print(np.array(petal_kinds))# 14. 在 iris_data 中创建一个新列,其中 volume 是 (pi x petallength x sepallength ^ 2)/ 3
new_parameter = [np.pi * iris_array[:, 0][i] * iris_array[:, 2][i] for i in range(len(iris_array[:, 0]))]
iris_array = np.column_stack([iris_array, new_parameter])  # 向numpy数组中添加列
# print(iris_array)# 15.随机抽鸢尾属植物的种类,使得Iris-setosa的数量是Iris-versicolor和Iris-virginica数量的两倍。
kinds = ['Iris‐setosa', 'Iris‐versicolor', 'Iris‐virginica']
np.random.seed(20201201)
random_results = np.random.choice(kinds, 10000, p=[0.5, 0.25, 0.25])  # 概率抽样# 16. 根据 Sepal.Length 列对数据集进行排序
id_speal = np.lexsort([iris_array[:, 0]])  # 按第1列递增的顺序对每行排序
ir = iris_array[id_speal]# 17. 在鸢尾属植物数据集中找到最常见的花瓣长度值(第3列)
petal_len, counts = np.unique(iris_array[:, 2], return_counts=True)
# print(petal_len[np.argmax(counts)])  # 出现次数最多的花瓣
# print(np.argmax(counts))  # 出现次数# 18. 在鸢尾花数据集的 petalwidth(第4列)中查找第一次出现的值大于1.0的位置
idxs = np.where(iris_array[:, 3] > 1.0)[0][0]
# print(idxs)

Numpy 学习专题(十)—— 大作业相关推荐

  1. 「AlphaGo 之父」David Silver最新演讲,传授强化学习的十大原则

    「AlphaGo 之父」David Silver最新演讲,传授强化学习的十大原则 https://mp.weixin.qq.com/s/KBddskHUAzQ8dm0Onu13ZA 演讲课件地址: h ...

  2. 深度学习未来十大趋势

    深度学习未来十大趋势 [日期:2015-12-22] 来源: 作者:张巨岩 [字体:大 中 小] 本周,我在加拿大蒙特利尔参加了NIPS(Neural Information Processing S ...

  3. 2020年需要学习的十大按需编程语言

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 编程语言大约有600多种.编程语言的需求和流行程度每年都在变化.另 ...

  4. 2019年深度学习的十大预测

    来源:云栖社区丨公众号 摘要:如果连思考方式都是错的,机器学习肯定不会有很大的进步! 2018年已结束,现在是开始预测2019深度学习的时候了.以下是我之前对2017年和2018年的预测和回顾: 关于 ...

  5. python学习第十讲作业-2021-1-6

    作业1: 解答: # 作业1: names = ["jerry","hansen","Amy","Wendy",&quo ...

  6. Python深度学习十大核心算法!

    深度学习已经成为了一种热门的技术,它的应用领域正在不断扩大.在深度学习中,有一些核心的算法是非常重要的,这些算法为深度学习的应用提供了强大的基础.在本文中,我们将介绍基于Python深度学习的十大核心 ...

  7. PMBOK十大项目管理之十沟通管理学习复述

    学习PMP十大项目管理之十沟通管理,复述一下分享给大家也加深记忆. 1.沟通的 方式 内部-外部 正式-非正式 垂直-水平 官方-非官方 书面-口头 言语-体语 2.乔哈里窗(joharl windo ...

  8. 如何实践AI深度学习的十大惊艳案例

    https://www.toutiao.com/i6641746367272190477/ 2019-01-02 12:08:01 你可能已经听说过深度学习并认为它是骇人的数据科学里的一个领域.怎么可 ...

  9. 「大话设计模式 - 解读」5 大作业

    内容要求 在这边把两次作业合在一起.作业要求实现一个商场结算程序.其中要完成几个功能: 结算模块.针对不同的商品不同的营销策略(不同打折方式)进行结算: 商品状态.商品需要至少包含在售,缺货以及上架中 ...

最新文章

  1. Redis的数据结构
  2. Flatten Nested Arrays(展平嵌套数组)
  3. 脑细胞膜等效神经网路
  4. ros 工作流程图4
  5. Python第二天学习
  6. RBAC 基于角色的访问控制
  7. 源码大招:不服来战!撸这些完整项目,你不牛逼都难!
  8. [Vue.js] 路由 -- 基于vue-router的案例--后台管理
  9. VR 、AR 谁让你眼前一亮
  10. 《沟通的技术——让交流、会议与演讲更有效》一第一部分 建导准备
  11. JAVA视频全套在线学习
  12. Shell中的幽灵王者—JAVAWEB 内存马 【认知篇】
  13. ReactOS的SVN服务器
  14. python所有for循环语句都可以用while改写_所有for循环语句都可以用while循环语句改写。...
  15. Python基础-映射
  16. pandas, dataframe获取最后一行的三种方法
  17. 折价买分级基金的教程
  18. kakaotalk Id别人突然搜索不到,加入开放聊天室被封 KakaoTalk 被封 Kakaotalk临时禁用Kakao被团队临时禁用 kakaoTalk无法连接服务器
  19. 搜苹果ipad版_iPad抠图比PC更给力 iPad版PS的自动抠图神了
  20. 数字藏品交易系统开发 数字藏品开发

热门文章

  1. GSR2501国产2.4G PA替代RFX2401C,AT2401C,RT201
  2. 用“心”迎接情人节,用另一种形式表达爱意
  3. 卜算子.咏梅 英文版
  4. 计算机模拟光学图像加密,光学图像加密中级联相位恢复算法的应用
  5. Oracle的逻辑读和物理读
  6. 云数据库RDS与自建数据库相比到底有什么优势?
  7. 重磅!这可能是史上最全的AI产业链地图了
  8. (转)android EditText 设置弹出数字输入法键盘
  9. Redis 异地双活实战
  10. DICOM医学影像协议