SiriBlog

siriyang的个人博客


  • 首页

  • 排行榜

  • 标签115

  • 分类37

  • 归档320

  • 关于

  • 搜索

X-Data数据工程基础实践(二)

发表于 2020-01-08 更新于 2021-10-29 分类于 考研 , 复试 阅读次数: Valine:
本文字数: 4.1k 阅读时长 ≈ 4 分钟

前言

  首先测试下环境是否安装成功:

1
2
3
4
import xgboost as xgb
import lightgbm as lgb

print("Hello world")

  没想到第一步就出了问题,一开始安装的numpy 1.13.1在运行时找不到DLL,升级到1.14.1就好了。

正文

  今天来完成任务一的前三个实验,都是基于课后作业(二)的,位于实验指导书的P55页。

实验一

实验题目及内容:

  用Python实现F1-score,并自己构建一个简易数据集进行测试

实验过程步骤:
  F1-score的概念在P25页。

真实情况 预测:正例 预测:反例
正例 TP(真正例) FN(假反例)
反例 FP(假正例) TN(真反例)

  查准率P(Precision):

  查全率R(Recall):

  F1-score定义:

  数据集我准备使用随机函数生成类似实验报告癌症预测的数据。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import numpy as np
import pandas as pd

DATASIZE=20

d={"1_白细胞量":pd.Series(np.random.rand(DATASIZE)*10,index=list(range(1,DATASIZE+1))),
"2_红细胞量":pd.Series(np.random.rand(DATASIZE)*10,index=list(range(1,DATASIZE+1))),
"3_血小板量":pd.Series(np.random.rand(DATASIZE)*10,index=list(range(1,DATASIZE+1))),
"4_是否患癌":pd.Series(np.random.randint(0,2,size=DATASIZE),index=list(range(1,DATASIZE+1))),
"5_预测标签":pd.Series(np.random.randint(0,2,size=DATASIZE),index=list(range(1,DATASIZE+1)))
}

df=pd.DataFrame(d)

print(df)

# 混淆矩阵:TP([1][1])、FN([1][0])、FP([0][1])、TN([0][0])
CM=[[0,0],[0,0]]

for i in range(0,DATASIZE):
CM[df.iloc[i,3]][df.iloc[i,4]]+=1

print("\nTP:%d \t FN:%d \nFP:%d \t TN:%d\n"%(CM[1][1],CM[1][0],CM[0][1],CM[0][0]))

# 查准率
P=(CM[1][1])/(CM[1][1]+CM[0][1])

# 查全率
R=(CM[1][1])/(CM[1][1]+CM[1][0])

print("查准率:%.3f \t 查全率:%.3f \n"%(P,R))

# F1-score
F1=(2*P*R)/(P+R)

print("F1-score:%.3f"%(F1))

输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
      1_白细胞量    2_红细胞量    3_血小板量  4_是否患癌  5_预测标签
1 7.649695 9.285674 9.834568 0 0
2 6.678823 4.570600 8.031230 1 0
3 8.106651 0.641709 8.839308 1 1
4 2.662931 4.981598 8.283962 1 1
5 3.826887 2.935298 3.343045 1 1
6 1.697953 3.633140 4.559995 1 1
7 9.824869 5.350851 4.582822 0 0
8 9.177900 9.932356 8.004274 1 1
9 9.195569 3.364753 4.098847 1 0
10 9.733827 8.082343 8.249549 1 1
11 9.751459 7.786028 0.001038 1 1
12 1.701704 5.761951 6.612469 1 0
13 1.206795 3.815986 7.174067 0 1
14 0.253945 2.245216 5.939660 0 1
15 9.703584 0.880870 5.699083 0 1
16 0.911601 5.552524 1.718022 1 0
17 1.784459 0.933187 1.385436 1 0
18 2.670773 8.680685 9.337132 1 0
19 4.451888 6.281710 8.538366 1 1
20 7.270346 7.042375 6.282610 1 0

TP:8 FN:7
FP:3 TN:2

查准率:0.727 查全率:0.533

F1-score:0.615

2020.2.4更新

0117第一次评测:
掌握了F1-score的定义,并使用代码实现;数据集规模太小。

  按照1月17号提交结果的评测来看需要加大数据集。

实验二

实验题目及内容:

  用python中的for循环和列表推导式,分别实现计算:1+2+3+…+1000

实验过程步骤:
  这个实验比较简单,几行代码就搞定了。

1
2
3
4
5
6
7
8
9
10
11
12
# for 循环

s = 0

for i in range(1,1001):
s += i

print("for 循环:",s)

# 列表推导式

print("列表推导式:",sum([ x for x in range(1,1001)]))

运行结果:

1
2
for 循环: 500500
列表推导式: 500500

  不过要注意的是,如果第一个变量s取名为sum,那么下面再调用sum函数的时候就会产生歧义而导致报错。

实验三

实验题目及内容:

  随机生成一个五列十行的dataframe的数据类型,行列索引自定义,绘制出对应的柱状图、散点图,以及在查询官网学习绘制一个课程未讲解(即除柱状图、饼图、散点图、箱线图以外的图形)的数据分析的图形

实验过程步骤:
  正好继续使用第一个实验的数据集,然后随便取两个字段来绘制图形。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

DATASIZE=10

d={"A":pd.Series(np.random.randint(0,100,size=DATASIZE),index=list(range(1,DATASIZE+1))),
"B":pd.Series(np.random.randint(0,100,size=DATASIZE),index=list(range(1,DATASIZE+1))),
"C":pd.Series(np.random.randint(0,100,size=DATASIZE),index=list(range(1,DATASIZE+1))),
"D":pd.Series(np.random.randint(0,100,size=DATASIZE),index=list(range(1,DATASIZE+1))),
"E":pd.Series(np.random.randint(0,100,size=DATASIZE),index=list(range(1,DATASIZE+1)))
}

df=pd.DataFrame(d)

print(df)

# 柱状图
df.plot(kind='bar')
plt.show()

# 散点图
df.plot(kind='scatter',x='A',y='B')
plt.show()

# 面积图
df.plot(kind='area')
plt.show()

输出数据:

1
2
3
4
5
6
7
8
9
10
11
     A   B   C   D   E
1 34 46 21 5 57
2 47 1 70 11 42
3 28 84 29 19 33
4 20 47 92 40 25
5 80 6 57 25 49
6 68 70 18 60 21
7 64 3 55 26 43
8 64 67 86 77 11
9 67 50 26 53 23
10 82 53 58 93 23

绘制图形:



-------- 本文结束 感谢阅读 --------
相关文章
  • X-Data数据工程基础实践(十)
  • X-Data数据工程基础实践(九)
  • X-Data数据工程基础实践(八)
  • X-Data数据工程基础实践(七)
  • X-Data数据工程基础实践过程中遇到的问题
觉得文章写的不错的话,请我喝瓶怡宝吧!😀
SiriYang 微信支付

微信支付

SiriYang 支付宝

支付宝

  • 本文标题: X-Data数据工程基础实践(二)
  • 本文作者: SiriYang
  • 创建时间: 2020年01月08日 - 19时01分
  • 修改时间: 2021年10月29日 - 18时10分
  • 本文链接: https://blog.siriyang.cn/posts/20200108190000id.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
学习笔记 考研 复试 Python 机器学习 数据挖掘
X-Data数据工程基础实践(三)
STL常用模板:MultiSet多元集合
  • 文章目录
  • 站点概览
SiriYang

SiriYang

努力搬砖攒钱买镜头的摄影迷
320 日志
33 分类
88 标签
RSS
GitHub E-Mail
Creative Commons
Links
  • 友情链接
  • 作品商铺

  1. 前言
  2. 正文
    1. 实验一
      1. 2020.2.4更新
    2. 实验二
    3. 实验三
蜀ICP备19008337号 © 2019 – 2025 SiriYang | 1.7m | 25:41
0%