首先说明一下,我使用的是上一篇所说的jupyter Notebook ,所以有一些是标记,并没有带“#”注释,这里边也用到了上次所说的两个库,sklearn以及panda数据导入的预处理。是以印第安人糖尿病数据集为例,文件也会发上去的,先来一个网盘链接用着链接:https://pan.baidu.com/s/11UPMzeugLPZ4Kce-FXGH-g
提取码:3lbm


Python 3  ##
from sklearn import datasets
iris=datasets.load_iris()
##ris数据展示
print(iris.data)
​
[[5.1 3.5 1.4 0.2][4.9 3.  1.4 0.2][4.7 3.2 1.3 0.2][4.6 3.1 1.5 0.2][5.  3.6 1.4 0.2][5.4 3.9 1.7 0.4][4.6 3.4 1.4 0.3][5.  3.4 1.5 0.2][4.4 2.9 1.4 0.2][4.9 3.1 1.5 0.1][5.4 3.7 1.5 0.2][4.8 3.4 1.6 0.2][4.8 3.  1.4 0.1][4.3 3.  1.1 0.1][5.8 4.  1.2 0.2][5.7 4.4 1.5 0.4][5.4 3.9 1.3 0.4][5.1 3.5 1.4 0.3][5.7 3.8 1.7 0.3][5.1 3.8 1.5 0.3][5.4 3.4 1.7 0.2][5.1 3.7 1.5 0.4][4.6 3.6 1.  0.2][5.1 3.3 1.7 0.5][4.8 3.4 1.9 0.2][5.  3.  1.6 0.2][5.  3.4 1.6 0.4][5.2 3.5 1.5 0.2][5.2 3.4 1.4 0.2][4.7 3.2 1.6 0.2][4.8 3.1 1.6 0.2][5.4 3.4 1.5 0.4][5.2 4.1 1.5 0.1][5.5 4.2 1.4 0.2][4.9 3.1 1.5 0.2][5.  3.2 1.2 0.2][5.5 3.5 1.3 0.2][4.9 3.6 1.4 0.1][4.4 3.  1.3 0.2][5.1 3.4 1.5 0.2][5.  3.5 1.3 0.3][4.5 2.3 1.3 0.3][4.4 3.2 1.3 0.2][5.  3.5 1.6 0.6][5.1 3.8 1.9 0.4][4.8 3.  1.4 0.3][5.1 3.8 1.6 0.2][4.6 3.2 1.4 0.2][5.3 3.7 1.5 0.2][5.  3.3 1.4 0.2][7.  3.2 4.7 1.4][6.4 3.2 4.5 1.5][6.9 3.1 4.9 1.5][5.5 2.3 4.  1.3][6.5 2.8 4.6 1.5][5.7 2.8 4.5 1.3][6.3 3.3 4.7 1.6][4.9 2.4 3.3 1. ][6.6 2.9 4.6 1.3][5.2 2.7 3.9 1.4][5.  2.  3.5 1. ][5.9 3.  4.2 1.5][6.  2.2 4.  1. ][6.1 2.9 4.7 1.4][5.6 2.9 3.6 1.3][6.7 3.1 4.4 1.4][5.6 3.  4.5 1.5][5.8 2.7 4.1 1. ][6.2 2.2 4.5 1.5][5.6 2.5 3.9 1.1][5.9 3.2 4.8 1.8][6.1 2.8 4.  1.3][6.3 2.5 4.9 1.5][6.1 2.8 4.7 1.2][6.4 2.9 4.3 1.3][6.6 3.  4.4 1.4][6.8 2.8 4.8 1.4][6.7 3.  5.  1.7][6.  2.9 4.5 1.5][5.7 2.6 3.5 1. ][5.5 2.4 3.8 1.1][5.5 2.4 3.7 1. ][5.8 2.7 3.9 1.2][6.  2.7 5.1 1.6][5.4 3.  4.5 1.5][6.  3.4 4.5 1.6][6.7 3.1 4.7 1.5][6.3 2.3 4.4 1.3][5.6 3.  4.1 1.3][5.5 2.5 4.  1.3][5.5 2.6 4.4 1.2][6.1 3.  4.6 1.4][5.8 2.6 4.  1.2][5.  2.3 3.3 1. ][5.6 2.7 4.2 1.3][5.7 3.  4.2 1.2][5.7 2.9 4.2 1.3][6.2 2.9 4.3 1.3][5.1 2.5 3.  1.1][5.7 2.8 4.1 1.3][6.3 3.3 6.  2.5][5.8 2.7 5.1 1.9][7.1 3.  5.9 2.1][6.3 2.9 5.6 1.8][6.5 3.  5.8 2.2][7.6 3.  6.6 2.1][4.9 2.5 4.5 1.7][7.3 2.9 6.3 1.8][6.7 2.5 5.8 1.8][7.2 3.6 6.1 2.5][6.5 3.2 5.1 2. ][6.4 2.7 5.3 1.9][6.8 3.  5.5 2.1][5.7 2.5 5.  2. ][5.8 2.8 5.1 2.4][6.4 3.2 5.3 2.3][6.5 3.  5.5 1.8][7.7 3.8 6.7 2.2][7.7 2.6 6.9 2.3][6.  2.2 5.  1.5][6.9 3.2 5.7 2.3][5.6 2.8 4.9 2. ][7.7 2.8 6.7 2. ][6.3 2.7 4.9 1.8][6.7 3.3 5.7 2.1][7.2 3.2 6.  1.8][6.2 2.8 4.8 1.8][6.1 3.  4.9 1.8][6.4 2.8 5.6 2.1][7.2 3.  5.8 1.6][7.4 2.8 6.1 1.9][7.9 3.8 6.4 2. ][6.4 2.8 5.6 2.2][6.3 2.8 5.1 1.5][6.1 2.6 5.6 1.4][7.7 3.  6.1 2.3][6.3 3.4 5.6 2.4][6.4 3.1 5.5 1.8][6.  3.  4.8 1.8][6.9 3.1 5.4 2.1][6.7 3.1 5.6 2.4][6.9 3.1 5.1 2.3][5.8 2.7 5.1 1.9][6.8 3.2 5.9 2.3][6.7 3.3 5.7 2.5][6.7 3.  5.2 2.3][6.3 2.5 5.  1.9][6.5 3.  5.2 2. ][6.2 3.4 5.4 2.3][5.9 3.  5.1 1.8]]
data/pima-indians-diabetes.data.csv'
pima=pd.read_csv(path)
pima.head()
#数据预处理
import pandas as pd
​
path='data/pima-indians-diabetes.data.csv'
pima=pd.read_csv(path)
pima.head()
pregnant    glucose bp  skin    insulin bimi    pedigree    age label
0   6   148 72  35  0   33.6    0.627   50  1
1   1   85  66  29  0   26.6    0.351   31  0
2   8   183 64  0   0   23.3    0.672   32  1
3   1   89  66  23  94  28.1    0.167   21  0
4   0   137 40  35  168 43.1    2.288   33  1
insulin
#
feature_names=['pregnant','insulin','bimi','age']
X=pima[feature_names]
y=pima.label
#维度确认
print(X.shape)
print(y.shape)
(768, 4)
(768,)
#数据分离
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=0)
#模型训练
from sklearn.linear_model import LogisticRegression
logreg=LogisticRegression()
logreg.fit(X_train,y_train)
D:\Anaconda3\lib\site-packages\sklearn\linear_model\logistic.py:432: FutureWarning: Default solver will be changed to 'lbfgs' in 0.22. Specify a solver to silence this warning.FutureWarning)
LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,intercept_scaling=1, l1_ratio=None, max_iter=100,multi_class='warn', n_jobs=None, penalty='l2',random_state=None, solver='warn', tol=0.0001, verbose=0,warm_start=False)
#测试数据集结果预测
y_pred=logreg.predict(X_test)
#使用准确率进行评估
from sklearn import metrics
print(metrics.accuracy_score(y_test,y_pred))
0.6927083333333334
#确认正负样本数据量
y_test.value_counts()
​
0    130
1     62
Name: label, dtype: int64
#1的·比例
y_test.mean()
0.3229166666666667
#0的比例
1-y_test.mean()
0.6770833333333333
#空的比例
max(y_test.mean(),1-y_test.mean())
0.6770833333333333
#计算并展示混淆矩阵
print(metrics.confusion_matrix(y_test,y_pred))
[[118  12][ 47  15]]
混淆矩阵,又称误差矩阵,用于衡量分类算法的准确程度
true Positives(TP):预测准确、实际为正样本的数量(实际为1,预测为1)
true Negatives(TN):预测准确、实际为负样本的数量(实际为0,预测为0)
true Positives(FP):预测错误、实际为负样本的数量(实际为0,预测为1)
true Negatives(FN):预测错误、实际为正样本的数量(实际为1,预测为0)
​
y_test
#展示部分实际结果(25组)
print("true:",y_test.values[0:25])
print("pred:",y_pred[0:25])
true: [1 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0]
pred: [0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0]
#四个因子赋值
confusion=metrics.confusion_matrix(y_test,y_pred)
TN=confusion[0,0]
FP=confusion[0,1]
FN=confusion[1,0]
TP=confusion[1,1]
print(TN,FP,FN,TP)
118 12 47 15
### 混淆矩阵指标
​
#准确率:整体样本中,预测正确样本数的比例
#·Accuracy=(TP+TN)/(TP+TN+FP+FN)
accuracy=(TP+TN)/(TP+TN+FP+FN)
print(accuracy)
print(metrics.accuracy_score(y_test,y_pred))
0.6927083333333334
0.6927083333333334
#错误率:整体样本中,预测错误样本数的比例
#·Misclassification Rate=(FP+FN)/(TP+TN+FP+FN)
mis_rate=(FP+FN)/(TP+TN+FP+FN)
print(mis_rate)
print(1-metrics.accuracy_score(y_test,y_pred))
​
0.3072916666666667
0.30729166666666663
#灵敏率(召回率):正样本中,预测正确的比例
#·Sensitivity=Recall=TP/(TP+FN)
recall=TP/(TP+FN)
print(recall)
​
0.24193548387096775
#特异度:负样本中,预测正确的比例
#·Specificity=TN/(TN+FP)
specificity=TN/(TN+FP)
print(specificity)
0.9076923076923077
精确率:预测结果为正的样本中,预测正确的比例
·Precision=TP/(TP+FP)
precision=TP/(TP+FP)
print(precision)
0.5555555555555556
ecall/(Precision+recall)
F1分数:综合Precision和recall的一个判断指标·F1 Score=2*Precision X Recall/(Precision+recall)
F1_score=2*precision*recall/(precision+recall)
print(F1_score)
0.3370786516853933
print

跟我一起学Python——机械学习实现之数据预处理(混淆矩阵,印第安人糖尿病案例)(Second day)相关推荐

  1. 大数据好还是不好_学python好还是大数据好?想学IT,但有点搞不清方向的人可以看看...

    这是我在某平台上看到的一个问题,学IT的话,是学python好还是学大数据好? 首先这个问题不太对,因为大数据和python,从根源上来说是两码事,就像你问我,是学做湘菜好,还是学做打铁好. 所以,学 ...

  2. python游戏中调整箭头下落速度_入门 | 三行Python代码,让数据预处理速度提高2到6倍...

    原标题:入门 | 三行Python代码,让数据预处理速度提高2到6倍 选自TowardsDataScience 作者:George Seif,机器之心编译 在 Python 中,我们可以找到原生的并行 ...

  3. 回归素材(part9)--PYTHON机器学习手册-从数据预处理到深度学习

    学习笔记,仅供参考,有错必纠 PYTHON机器学习手册-从数据预处理到深度学习 通过正则化减少方差 我们可以使用岭回归或者Lasso回归,介绍回归模型的方差.

  4. Python数据分析中的数据预处理:数据标准化

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python数据分析中的 数据预处理:数据标准化 ● 选择题 以下关于 ...

  5. 0编程基础学python之数据类型和数据操作

    0基础学习python之数据类型和数据操作 大家都知道,我们python的强大功能之一就是处理数据,所以我们今天就来探讨一下python中的一些数据类型和他们之间的操作吧. 先来回顾学过知识,上图: ...

  6. 负基础学python编程_【数据科学系统学习】Python # 编程基础[二]

    在上一篇中我们讲到了函数,如果你想在所编写的别的程序中重用一些函数的话,应该怎么办?正如你可能想象到的那样,答案是模块(Modules).我们这一篇就从模块说起. 模块 为了编写可维护的代码,我们把很 ...

  7. 对比Excel学Python(二)数据可视化

    就是利用Python生成各种图表,也是本书的核心. 1.条形图 #导入要用的matplotlib库import matplotlib.pyplot as plt import numpy as np# ...

  8. 老菜鸟学PYthon - 高考志愿填报数据的实时采集

    一直想学习Python,又一直懒,直到今年高考志愿填报开始,在跟进学习的过程中发现了很多高分却报漏未被录取或没有报上的情况.(自家小子今年下半年开始高三生涯) 学习目的:2022年7月开始的高考志愿填 ...

  9. Python 第五章 数据预处理

    #缺失值填充 import pandas as pd import numpy as np data=pd.read_excel('missing.xlsx') #数据框data c=np.array ...

最新文章

  1. 用python画爱心的代码-Python一行代码画个爱心案例
  2. JVM内存区域划分总结
  3. 全球与中国光电通信芯片市场数据专项调研及竞争格局分析报告2022-2028年版
  4. arrayfunction[LeetCode]Convert Sorted Array to Binary Search Tree
  5. Mule ESB 学习笔记(11)Web Service Proxy(这里是一个可以正常运行的例子)
  6. 大话设计模式—原型模式
  7. 老板让我搞数字化转型?成功之后,我整理了这套超全的方法论
  8. 插件原理[转自CSDN]
  9. Spring MVC的处理流程详解
  10. 伪随机算法c语言,伪随机算法实现各语言实现示例。
  11. Ant安装与配置build.xml文件说明
  12. 时间管理的六项基本原则
  13. Kubernetes:应用部署、应用了解、应用公布、应用伸缩,-image=ikubernetes/myapp:v1
  14. OCR技术1-字符识别技术总览
  15. 内存(RAM ROM)外存(硬盘 闪存)
  16. CATIA鼠标操作简介
  17. canvas 绘制灰太狼
  18. 大数据计算系统 Blink 在端侧的应用实践
  19. Win10系统忘记开机密码的解决办法
  20. 判断是否是uc或者qq浏览器

热门文章

  1. 生成式模型和判别式模型区别
  2. Linux/Win/MacOS系统 安装JDK(Java)教程,JDK下载
  3. 幼儿园有 N 个孩子玩游戏,随机围成了一个圈,老师最终想让所有男生排列到一起,所有女生排列到一起。每次老师可以命令两个孩子交换位置,求最小的命令次数:代码实现...
  4. 关于win2003操作系统总结
  5. Linux开启ssh 远程登录
  6. 美的冰箱616成团直播,挑战吧净味君第二季之一级带货王诞生
  7. python批量修改图片的exif信息,增加GPS信息。
  8. 如何恢复相机已删除照片,相机里面的照片怎么恢复
  9. [转载]东航空姐用上海话唱的一首歌
  10. Linux进入单用户模式