如果你从事数据科学研究有一段时间了,那么pandas, scikit-learn seaborn和matplotlib这些库你都应该非常的熟悉。

如果您想要扩展您的视野,学习一些更少见但同样有用的库。在本文中,我将向您展示一些不太为人所知的但是却非常好用的python库。

imbalanced-learn

如果你过去一直在构建一些有监督的机器学习模型,你就会知道目标变量中的类别不平衡可能是一个大问题。这是因为在少数类中没有足够的例子来让算法学习模式。

一个解决方案是创建一些合成样本,通过使用例如SMOTE(合成少数群体过采样技术)来增加少数群体类的学习。

幸运的是,imbalance-learn库将帮助您在任何不平衡数据集上实现这一技术。

您可以通过在终端上执行以下命令来安装imbalance-learn库。

pip install imbalanced-learn 

为了演示如何平衡数据集,我们将使用sklearn下载乳腺癌数据集。

from sklearn.datasets import load_breast_cancer
import pandas as pddata = load_breast_cancer()
df = pd.DataFrame(data.data, columns=[data.feature_names])
df[‘target’] = data[‘target’]
df.head() 

下面看目标变量的分布。

df.target.value_counts()  

数据集确实是均匀分布的,尽管它不是非常不平衡:我们有357名乳腺癌患者和212名健康患者。

我们看看能不能让它更平衡一点。我们将使用SMOTE对0类进行过采样。

from imblearn.over_sampling import SMOTE
oversample = SMOTE()
X_oversample, y_oversample = oversample.fit_resample(data.data, data.target)
pd.Series(y_oversample).value_counts()

如你所见,数据集现在已经完全平衡了。每个类有357个实例。作为我们操作的结果,创建了145个人工实例。

statsmodels

这是另一个很棒的库,专门用来建立统计模型。我通常用它来拟合线性回归

它真的很容易使用,你可以马上得到很多关于模型的信息,比如R2 BIC、AIC、置信度和它们相应的p值。当使用scikit-learn的线性回归时,这些信息更难以获取。

让我们看看如何使用这个库来适应线性回归模型。让我们先下载一个波士顿房价数据集。

from sklearn.datasets import load_boston
import pandas as pd
data = load_boston()
df = pd.DataFrame(data.data, columns=[data.feature_names])
df[‘target’] = data[‘target’]
df.head()

上面是我们的数据集的前五行。有13个特征,我们可以看到一个目标变量是一个连续的数字。这是一个完美的回归数据集。

现在让我们使用pip安装统计模型库

pip install statsmodels

现在,我们可以使用以下代码尝试将线性回归模型与我们的数据相匹配。

import statsmodels.api as sm
X = sm.add_constant(df.drop(columns=[‘target’])) # adding a constant
model = sm.OLS(df.target, X).fit()
predictions = model.predict(X)
print_model = model.summary()
print(print_model)   

我们刚刚将一个线性回归模型拟合到这个数据集上,并打印出了该模型的详细摘要。您可以很容易地阅读所有重要信息,在必要时重新调整功能,并重新运行模型。

我发现与scikit-learn版本相比,使用statsmodels进行回归更容易,因为我需要的所有信息都在这个简短的报告中。

missingno

missingno是另一个有用的库。它可以帮助您可视化缺失值的分布。

您可能已经习惯使用isnull()函数检查pandas中的缺失值。这可以帮助您获取每列缺失值的数量,但不能帮助您确定它们的位置。这正是missingo变得有用的时候。

你可以使用下面的命令安装库:

pip install missingno

现在,让我们演示如何使用missingo来可视化缺失的数据。为了做到这一点,我们将从Kaggle下载预期寿命数据集。

然后可以使用read_csv()函数加载数据集,然后从missingno库调用matrix()函数。

import pandas as pd
import missingno as msno
df = pd.read_csv(‘Life Expectancy Data.csv’)
msno.matrix(df) 

可以看到缺失值的位置。如果怀疑丢失的值位于某个特定位置或遵循某个特定模式,那么它将非常有用。

总结

以上三个库非常的有用,通过使用它们可以简化我们的操作,提高我们的工作效率。

Python中非常有用的三个数据科学库相关推荐

  1. python中令人惊艳的小众数据科学库

    Python是门很神奇的语言,历经时间和实践检验,受到开发者和数据科学家一致好评,目前已经是全世界发展最好的编程语言之一.简单易用,完整而庞大的第三方库生态圈,使得Python成为编程小白和高级工程师 ...

  2. ML之XGBoost:XGBoost参数调优的优秀外文翻译—《XGBoost中的参数调优完整指南(带python中的代码)》(三)

    ML之XGBoost:XGBoost参数调优的优秀外文翻译-<XGBoost中的参数调优完整指南(带python中的代码)>(三) 目录 3. 参数微调案例/Parameter Tunin ...

  3. b是python文件二进制打开_如何在Python中打开和显示原始二进制数据?

    'rb'模式允许您从Python中的文件读取原始二进制数据:with open(filename, 'rb') as file: raw_binary_data = file.read() type( ...

  4. chatgpt赋能python:Python是一门非常流行的编程语言,它被广泛应用于不同领域的软件开发中,包括Web开发、数据科学、人工智能等。虽然Python本身非常强大和灵活,但是要让自己的Pyt

    Python是一门非常流行的编程语言,它被广泛应用于不同领域的软件开发中,包括Web开发.数据科学.人工智能等.虽然Python本身非常强大和灵活,但是要让自己的Python代码在互联网上被搜索引擎优 ...

  5. Python数据科学库(三)

    Python数据科学库(三) 一.基本图形画法 (一)散点图 1.使用 2.参数 (二)折线图 1.使用 2.参数 3.案例 (三)条形图 1.使用 (1)水平条形图 (2)垂直条形图 2.参数 (四 ...

  6. python安装包-在Python中安装包的三种方法

    最近一段时间都在学习 Python3(如果你想部署 Python3 的开发环境,可参考<是时候配置一个Python3的开发环境了>),乘此机会重新回顾了 Python2 的相关知识,在 P ...

  7. python读取json数据格式问题_浅谈Python中的异常和JSON读写数据的实现

    异常可以防止出现一些不友好的信息返回给用户,有助于提升程序的可用性,在java中通过try ... catch ... finally来处理异常,在Python中通过try ... except .. ...

  8. python安装-在Python中安装包的三种方法

    最近一段时间都在学习 Python3(如果你想部署 Python3 的开发环境,可参考<是时候配置一个Python3的开发环境了>),乘此机会重新回顾了 Python2 的相关知识,在 P ...

  9. Python中通过索引名称提取数据loc()函数Python中通过行和列下标提取数据iloc()函数

    [小白从小学Python.C.Java] [Python全国计算机等级考试] [Python数据分析考试必会题] ● 标题与摘要 Python中通过索引名称提取数据 loc()函数 Python中通过 ...

最新文章

  1. 基于Guava实现的文件复制
  2. jsf登录注册页面_您将在下一个项目中使用JSF吗?
  3. mysql拷贝恢复.frm_通过.frm .ibd文件恢复MySQL数据
  4. Linux学习:文件 I/O 函数
  5. monkey 运行时间怎么计算_基于STM32F103C8T6工控板利用定时器计算某段代码的运行时间...
  6. IDEA 底部工具栏没有 Version Control 解决办法
  7. Flask 离线脚本
  8. 现男友代言!最强自拍手机荣耀20S正式发布:售价1899元起
  9. 计算机桌面亮度调整,接近完美:如何调整计算机屏幕的亮度?如何调整计算机屏幕的亮度[graphic]...
  10. 033-生产机器扩容
  11. elmentui的短信验证界面_[javascript] elementui下login登录页界面和js验证逻辑
  12. 重庆两江新区 闯出产业社区云新路
  13. wps如何删除指定页眉
  14. 命名实体识别python_命名实体识别的两种方法
  15. 仿照写的sina微博的简单爬虫
  16. 官网删除「儿童性虐待内容检测方案」,但苹果仍未放弃该计划
  17. Boost.Interprocess.file_mapping内存映射文件
  18. Ubuntu + nvidia驱动+ cuda安装教程以及重装问题
  19. 安卓应用SHA1的获取并在Unity中打包发布
  20. c++容器vector删除元素erase()与迭代器的使用

热门文章

  1. 在厕所遇到领导到底该说些什么?
  2. Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
  3. 美多后台管理和项目环境搭建
  4. 爬虫之 lxml模块和xpath语法
  5. 汇编语言(王爽 第三版)检测点9.1 解决-a无法输入jmp dword ptr es:[1000h]
  6. 1996 年 3 月. IEEE 成立了 802.3z 工作组开始制定 1000Mb/s 标准。下列千兆以太网中不属于该标准的是(19)【答案】C
  7. C语言字符串大小写转换_只愿与一人十指紧扣_新浪博客
  8. 用于RGB-D显著目标检测的自监督表示学习
  9. 从词向量到Bert——简单作业题+讲解
  10. [Linux]VI相关操作